我有一個功能:
final ref= FirebaseFirestore.instance.collection('test').doc('t');
Future _custom()async{
await ref.update({'t':FieldValue.increment(1)});
await ref.get().then((last) => print(last.data()!['t']));
return;
}
使用按鈕onPressed方法,我連續多次呼叫該函式。我希望結果如下:
1
2
3
4
5
但是,我得到了這個:
1
1
3
3
4
4
7
雖然我的點擊速度更快,但結果卻大錯特錯。但是,當變慢時,它會更準確。
uj5u.com熱心網友回復:
雖然這FieldValue.increment(x)將確保沒有重疊的寫入沖突,但您讀出數字的方法會給您錯誤的結果。
如果您在所有增量之后檢查您的資料,您會發現它是正確的。
如果您想確保您的用戶顯示正確的數字,您可以在點擊時增加您的本地應用程式狀態,有點像樂觀的寫入。
https://firebase.google.com/docs/firestore/manage-data/add-data#dart_12
警告。增量操作對于實作計數器很有用,但請記住,您每秒只能更新一次單個檔案。
uj5u.com熱心網友回復:
你只需用這個替換
await ref.set({'t':FieldValue.increment(1)},isMerged:true);
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/498227.html
