Будут ли два одновременных запроса на чтение иметь совместимые результаты? - PullRequest
0 голосов
/ 18 июня 2019

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

Будет ли приведенный ниже код всегда давать мне такое же количество баз, как у игроков?

const db = firebase.firestore();
const basesPromise = db.collection("bases").get();
const playersPromise = db.collection("players").get();
Promise.all([basesPromise, playersPromise])
    .then(([bases, players]) => {
      console.log("Bases:", bases);
      console.log("Players:", players);
    });

В целом, мне интересно, соответствуют ли результаты двух запросов одновременно, совместимые друг с другом.

Эти запросы одновременно попадают на сервер и возвращают данные, согласующиеся друг с другом?

Спасибо большое!

1 Ответ

2 голосов
/ 18 июня 2019

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

Единственные гарантии, которые вы получаете, - это то, что изменения некоторого количества документов, выполненных за одну транзакцию или пакетную запись, будут происходить атомарно.Частично завершенная транзакция или пакет никогда не выполняются.

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