Я поднял это на флаттер 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");
});
}
Я видел два случая ошибок, и они, кажется, все связаны с асинхронной проблемой.Кто-нибудь еще сталкивался с этим раньше?
, когда первая транзакция.get () завершена, до того, как она достигнет следующей get (), вторая попытка прыгнуть, чтобы перезапустить все, пока предыдущийказнь все еще продолжается.Я понятия не имею, как это произошло.Это даже случилось с примером кода, предоставленным страницей паба Firestore.
Когда он достигает первого "awaitaction.get (itemReferences [i]);", он сразу же переходит к печати («завершено») и затем возвращается, чтобы получить еще один снимок, а затем обновить, что также приводит к ошибке.