Правильный способ проверить, кто первым установил свойство в firebase firestore - PullRequest
1 голос
/ 28 апреля 2020

Я создаю игру, используя firebase firestore, и мне нужно сказать, какой пользователь запустил игру. У меня была идея иметь свойство startedByPlayer: string и использовать транзакцию для обновления этого свойства. Если это свойство уже установлено, то в конечном итоге вернуть false; в противном случае установите это свойство для текущего пользователя и в конечном итоге верните true.

Поскольку тестировать условия гонки сложно, я просто хотел убедиться, что это правильный подход:

function tryToStartGame(player : Player) {
  const ref = gamesRef.doc("game");
  return db.runTransaction(function (transaction) {
    return transaction.get(ref).then(function (game) {
      if (!game.exists) {
        return false;
      }

      const { startedByPlayer: startedByUser } = game.data() as Game;

      if (!startedByUser) {
        transaction.update(ref, { startedByUser: player.id });
        return true;
      }

      return false;
    });
  });
}

1 Ответ

0 голосов
/ 28 апреля 2020

Да, это действительно отличная идея. В этом случае он будет охватывать уже запущенные игры, поэтому значения не будут заменены и не будет произведена ненужная запись или будет правильно установлено значение в случае необходимости. И, кроме того, у вас есть функция, которая будет подтверждать с помощью логического значения создание, если оно произошло в тот момент или уже было сделано. Итак, я думаю, что вы рассматриваете необходимые моменты в не очень сложной модели для вас.

Надеюсь, эта информация поможет прояснить ваши сомнения!

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