Как более эффективно структурировать базу данных firestore? - PullRequest
0 голосов
/ 26 ноября 2018

Я пытаюсь структурировать свою базу данных firebase (firestore).У меня такое ощущение, что я занимаюсь ненужным поиском документов, и мне было интересно, как я могу улучшить структуру, чтобы сделать ее более эффективной?

Так что я работаю над очень простой онлайн-версией игры в тег (игровая площадка).Игра начинается со случайного игрока, помеченного.Каждая игра (раунд игры) имеет дату окончания.Каждому игроку дается 3 часа, чтобы пометить кого-то еще.Победителем становится игрок, помеченный наименьшей продолжительностью.

Если игрок не войдет в систему и не пометит кого-либо еще (в течение этих 3 часов), он будет исключен из раунда.

Когда я вхожу и пытаюсь пометить случайного человека, система должна установить приоритет случайного игрока, который еще не был помечен.

Так выглядит моя коллекция games намомент.

Games (rounds) collection

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?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...