Flutter Firestore事务运行多次

时间:2019-03-13 10:36:29

标签: firebase flutter google-cloud-firestore

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 :(得分:0)

您的交易代码没有任何意义。它没有获取任何文档的内容。仅当您打算阅读,修改和编写至少一个文档时,才需要使用事务。

无论如何,事务功能只能运行一次。如果服务器发现文档上还有很多其他事务,并且很难跟上所有事务,则只需要运行多次即可。