Мое обновление Firestore runTransaction не работает правильно - PullRequest
0 голосов
/ 24 января 2019

Я пытаюсь обновить больше чем один элемент в моей базе данных пожарного магазина.но если я проверю больше, чем один, это имеет неправильное поведение.иногда это работает, иногда один или два элемента обновляются, а иногда это приводит к сбою приложения.

Как я могу это исправить?

Тест является глобальным 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;
  }
}
}

Можете ли вы помочь мне `?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...