当 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?

Firestore使用Rest API更新文档字段

Firebase Firestore更新时间字段安全问题

是否可以从firebase云函数node.js更新firestore中的map类型字段?

Swift Firestore 更新字段值

Firestore 只更新一个字段