Транзакция Flireter Firestore выполняется несколько раз - PullRequest
0 голосов
/ 13 марта 2019

В документации Firestore сказано:

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

Я использую пакет cloud_firestore и заметил, что делаю

final TransactionHandler transaction = (Transaction tx) async {
  DocumentSnapshot ds = await tx.get(userAccountsCollection.document(id));
  return ds.data;
};
return await runTransaction(transaction).then((data){
    return data;
});

транзакция может выполняться несколько раз, но всегда возвращаться после первой транзакции. Теперь в случае одновременного редактирования данные первой транзакции могут быть неверными, поэтому для меня это проблема.

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

1 Ответ

0 голосов
/ 13 марта 2019

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

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

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