Я пытаюсь структурировать свою базу данных firebase (firestore).У меня такое ощущение, что я занимаюсь ненужным поиском документов, и мне было интересно, как я могу улучшить структуру, чтобы сделать ее более эффективной?
Так что я работаю над очень простой онлайн-версией игры в тег (игровая площадка).Игра начинается со случайного игрока, помеченного.Каждая игра (раунд игры) имеет дату окончания.Каждому игроку дается 3 часа, чтобы пометить кого-то еще.Победителем становится игрок, помеченный наименьшей продолжительностью.
Если игрок не войдет в систему и не пометит кого-либо еще (в течение этих 3 часов), он будет исключен из раунда.
Когда я вхожу и пытаюсь пометить случайного человека, система должна установить приоритет случайного игрока, который еще не был помечен.
Так выглядит моя коллекция games
намомент.
taggedPlayer
в настоящее время помечен как игрок, тогда как leadPlayer
- игрок, выигравший этот раунд.После того, как taggedPlayer
войдет в систему и пометит случайного человека, время, которое ему потребовалось для этого, будет оценено по полю leadPlayer
duration
, и если они были быстрее, поле leadPlayer
будет соответственно обновлено.
Всегда будет 1 активная игра (в процессе).Чтобы получить активную игру, у меня есть поле inProgress
в каждом раунде игры.Поэтому я использую where('inProgress', '==', true).limit(1)
.
Я отслеживаю, сколько раз каждый игрок был помечен в taggedHistory
, чтобы я мог работать над магией расстановки приоритетов программно.
Наконец, я планируюдобавить поле dismissedPlayers
, которое будет выглядеть примерно так
{
<id>: true,
<another-id>: true
}
Так что я думаю, что мой вопрос - что является более эффективным способом получения активной игры?И будет ли приведенный выше код для dismissedPlayers
правильным?И чтобы показать победителей всех времен, имеет ли смысл создавать новую коллекцию winners
и обновлять ее каждый раз, когда игра заканчивается, вместо того, чтобы извлекать leadPlayer
из игр, в которых inProgress == false
?