[英]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.