Firebase 如何使用事务监视整个子集合?

Firebase 如何使用事务监视整个子集合?,firebase,dart,transactions,flutter,google-cloud-firestore,Firebase,Dart,Transactions,Flutter,Google Cloud Firestore,遵循这一点,我尝试使用事务来监控整个Firestore子集合中添加的新文档。基本上,如果只有一个文档,我只想将新文档写入子集合。我需要使用事务,以避免竞争条件导致子集合中的文档>2。最大值应该是2 如何使用事务监视添加到子集合的文档 我试图做很长时间,但无法解决 我正在尝试对文档使用子集合进行迭代,但不知道如何通过事务进行此操作 到目前为止我的代码(可能是错误的方法): Firestore事务不支持此操作。在事务中,只能通过其ID查找文档。不能对集合的整个内容进行事务处理,如果在事务的中间添加新

遵循这一点,我尝试使用事务来监控整个Firestore子集合中添加的新文档。基本上,如果只有一个文档,我只想将新文档写入子集合。我需要使用事务,以避免竞争条件导致子集合中的文档>2。最大值应该是2

如何使用事务监视添加到子集合的文档

我试图做很长时间,但无法解决

我正在尝试对文档使用子集合进行迭代,但不知道如何通过事务进行此操作

到目前为止我的代码(可能是错误的方法):


Firestore事务不支持此操作。在事务中,只能通过其ID查找文档。不能对集合的整个内容进行事务处理,如果在事务的中间添加新文档,则该事务将重试。您也不能对查询结果进行事务处理


取而代之的是,考虑在另一个集合中使用不同的文档来计算集合中的文档数量,并在事务中使用该文档。或者,至少是一个记录布尔值的文档,该布尔值指示集合是否有>2个文档。

Firestore事务不支持这一点。在事务中,只能通过其ID查找文档。不能对集合的整个内容进行事务处理,如果在事务的中间添加新文档,则该事务将重试。您也不能对查询结果进行事务处理

取而代之的是,考虑在另一个集合中使用不同的文档来计算集合中的文档数量,并在事务中使用该文档。或者,至少是一个记录布尔值的文档,该布尔值指示集合是否有>2个文档

                Firestore.instance.runTransaction((transaction) async {


                  final CollectionReference collectionRef = ref
                      .document(‘document’).collection(‘subCollection’);



                 List<DocumentSnapshot> subCollectionDocsSnapshot = [];
                  await collectionRef.getDocuments().then((querySnapshot) =>
                      querySnapshot.documents.forEach((document) {
                        subCollectionDocsSnapshot.add(document);
                      }
                      ));


                  final DocumentReference newDocRef = collectionRef.document(docName);

                  await transaction.set(
                      newDocRef,
                      {‘docName’: docName,
                      }
                  );

                });
                  subCollectionDocsSnapshot.forEach((document) {
                    transaction.get(document.reference);
                  });