我把它放在颤抖的Github上,但是没有分辨率,所以我想在这里试试运气。我试图使用事务来获取多个DocumentSnapshot并随后进行更新,但它只是保持报告隔离相关的错误。
请检查以下详细信息,基本上,当您仅尝试获取/更新一个DocumentSnapshot时,它可以很好地工作,但是在多次获取/更新的情况下,事情变得很麻烦。我已经被困了好几天了。
Future<String> postOrder(List<DocumentReference> itemReferences) {
final TransactionHandler updateTransaction = (Transaction transaction)async {
List<DocumentSnapshot> fetchedDocs = [];
for (int i = 0; i < itemReferences.length; i++) {
DocumentSnapshot fetchedDoc = await transaction.get(itemReferences[i]);
fetchedDocs.add(fetchedDoc);
}
for (int i = 0; i < fetchedDocs.length; i++) {
await transaction.update(itemReferences[i], fetchedDocs[i].data);
}
};
return Firestore.instance.runTransaction(updateTransaction).then((response){
print("complete");
});
}
我已经看到了两种错误情况,它们似乎都与异步问题有关。有人遇到过这些吗?
当第一个transaction.get()完成时,在到达下一个get()之前,第二次尝试跳入以重新运行所有内容,而前一个执行仍在进行中。我不知道这是怎么发生的。甚至发生在Firestore pub页面提供的示例代码中。
到达第一个“ await transaction.get(itemReferences [i]);”时,它会立即跳转到print(“ complete”),然后返回以继续获取另一个快照,然后进行更新,这也会引发错误。