У меня есть коллекция Firestore с именем dailyData
, в которой существует предварительно загруженный документ с полем totalCount
, а totalCount
- это число.Я ожидал, что приведенные ниже коды будут увеличивать totalCount на единицу, а затем извлекать значение обновленного totalCount
.Однако он не работает должным образом, например, когда totalCount
имеет значение 1
, после транзакции он будет успешно обновлен до 2
, но значение, переданное в dailyRank
, равно 1
вместо 2
.
var docs = await Firestore.instance
.collection('dailyData')
.getDocuments();
var ref = docs.documents.first.reference;
Firestore.instance
.runTransaction((transaction) async {
DocumentSnapshot freshSnap =
await transaction.get(ref);
await transaction.update(
freshSnap.reference, {
"totalCount": freshSnap["totalCount"] + 1
});
}).whenComplete(() async {
dailyRank = await ref.get().then(
(docSnapshot) =>
docSnapshot["totalCount"]);
});