我的Firestore runTransaction更新无法正常运行

时间:2019-01-24 11:32:35

标签: dart flutter google-cloud-firestore

我尝试更新Firestore数据库中的一项以上。但是,如果我再检查一个,它就会有不正常的行为。有时可以正常工作,有时可以更新一两个项目,有时可以使应用程序崩溃。

我该如何解决?

测试是全局AsyncSnapshot:

aendereFeld() async {
CollectionReference collectionReference =  Firestore.instance.collection("Benutzer").document("Anton").collection("Einkaufsliste").reference();
QuerySnapshot querySnapshot = await collectionReference.getDocuments();

//Welches Produkt wurde eingekauft
for(int i = 0; i < Test.data.produkte.length; i++){
  //In welchem Dokument
  for (int j = 0; j < querySnapshot.documents.length; j++){
    ProduktList produkte = ProduktList.fromJson(querySnapshot.documents[j].data);
    //Welches produkt aus akt. Dokument
    for (int k = 0; k < produkte.produkte.length; k++){
      if(Test.data.produkte[i].isChecked){
        if(Test.data.produkte[i].name == produkte.produkte[k].name){
          produkte.produkte[k].anzahl = 0;
          produkte.produkte[k].isChecked = false;
          Firestore.instance.runTransaction((transaction) async{
            await transaction.update(
                Firestore.instance.collection("Benutzer").document("Anton").collection("Einkaufsliste").document(
                    querySnapshot.documents[j].documentID),
                produkte.toProdukteJson()
            );
          });
          print("Name: " + Test.data.produkte[i].name);
          print("Break 1");
          break;
        }
      }else{
        if(Test.data.produkte[i].name == produkte.produkte[k].name){
          if(Test.data.produkte[i].anzahl != produkte.produkte[k].anzahl){
            produkte.produkte[k].anzahl = Test.data.produkte[i].anzahl;
            Firestore.instance.runTransaction((transaction) async{
              await transaction.update(
                  Firestore.instance.collection("Benutzer").document("Anton").collection("Einkaufsliste").document(
                      querySnapshot.documents[j].documentID),
                  produkte.toProdukteJson()
              );
            });
          }
        }
      }
    }
    print("Break 2");
    break;
  }
}
}

你能帮我吗?

0 个答案:

没有答案