当 Firestore 字段更新时,Observables 会重新查询所有数据吗?
Posted
技术标签:
【中文标题】当 Firestore 字段更新时,Observables 会重新查询所有数据吗?【英文标题】:Do Observables re-query ALL data when Firestore fields update? 【发布时间】:2020-04-05 22:44:17 【问题描述】:假设我在某个日期范围内对 Firestore 集合进行查询。如果我得到一组文档的 observable 并遍历它以建立一个本地集合,它是否会在每次 Firestore 发生变化时重新读取 Firestore 中的所有数据?假设这个 observable 来自包含 500 个文档的 where 子句,我通过做某事进行迭代:
this.firestoreObservable$.subscribe(documents =>
documents.forEach(async doc =>
// do something
)
)
如果 Firestore 上的一个文档中的一个字段发生更改,这是否会算作另外 500 个文档读取?如果是这样(哎哟!)什么是推荐的最佳实践来避免花费这么多读取?
谢谢。
【问题讨论】:
【参考方案1】:没有。如果只有一份文件更改,则只需阅读一次。只要查询正在主动侦听更新,整个文档集就会缓存在内存中,除了实际更改的内容之外,SDK 还会为您提供缓存的结果。
如果查询结束并启动新的查询,那么您将再次为完整的结果集付费。
【讨论】:
优秀。我不认为您可以将我指向包含该内容的文档吗?如果它在那里,我不知何故错过了它。感谢您的洞察力! 这是侦听器一直使用原始 Firebase 实时数据库以及后来使用 Firestore 的方式。据我所知,没有任何文档,但所有内容都是开源的,因此您可以自己查看。以上是关于当 Firestore 字段更新时,Observables 会重新查询所有数据吗?的主要内容,如果未能解决你的问题,请参考以下文章
使用 Cloud Firestore 触发器功能时如何获取 dataID?