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;
});
该事务可能运行多次,但总是在第一个事务之后返回。现在,在同时进行编辑的情况下,第一个交易数据可能不正确,所以这对我来说是个问题。
即使事务将多次运行并且在第一个事务完成后不返回,我如何等待事务真正完成?
答案 0 :(得分:0)
您的交易代码没有任何意义。它没有获取任何文档的内容。仅当您打算阅读,修改和编写至少一个文档时,才需要使用事务。
无论如何,事务功能只能运行一次。如果服务器发现文档上还有很多其他事务,并且很难跟上所有事务,则只需要运行多次即可。