[英]Flutter Firebase local change doesn't update listener stream
我依賴 Firebase Firestore 離線功能,所以我沒有按照Access Data Offline Firebase 文檔中所述對我的查詢使用await
。 我希望當我寫一些東西時,我會立即反映我的閱讀 stream,但是,我只在服務器/遠程更新時得到更新。 基本上:
await
_db.doc(parentDoc).collection(DocInnerCollection).doc(childDoc).update({
"name": value,
});
includeMetadataChanges
設置為 true。_db.doc(parentDoc)
.collection(DocInnerCollection)
.orderBy('start_date', 'desc')
.limitToLast(1)
.snapshots(includeMetadataChanges: true)
.map((snapshot) {
print(snapshot.metadata.isFromCache)
});
但是,我沒有得到這樣的更新,而是在服務器更新后才得到更新。
您只請求一個帶有.limitToLast(1)
的文檔,但沒有為您的查詢提供排序順序。 這實質上意味着您將從您的收藏中獲得一個隨機文檔,並且該文檔成為新更新文檔的可能性接近於零。
如果您想要最新的(不僅僅是最后的)文檔,您需要一些排序標准來確定最新的含義。 通常你會通過以下方式做到這一點:
lastUpdated
字段添加到您的文檔,並將其設置為firebase.firestore.FieldValue.serverTimestamp()
。orderBy('lastUpdated', 'desc')
在該時間戳上排序您的查詢。limit(1)
限制為第一個結果。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.