在更改一项后收听集合时,Firestore 会读取多少个内容?

biz*_*z84 9 firebase google-cloud-firestore

假设我有一个包含 10 个项目的 Firestore 集合,并且我的应用程序侦听该集合的快照以获取实时更新,并在列表视图中显示结果。

如果我更新该集合中的一个文档,将发出一个新快照,以便我可以重建列表视图。

但是会发生多少次读取呢?

自从重建整个列表视图后,我是否会获得 10 次额外读取(因为我有整个集合的侦听器)?

或者 Firebase SDK 是否足够智能,能够找出只有一个文档发生了更改,并通过与前一个(缓存的?)文档进行比较来计算新快照,从而导致一个只读?

这是文档在这方面的说法:

监听查询结果

Cloud Firestore 允许您监听查询结果并在查询结果发生变化时获取实时更新。

当您侦听查询结果时,每次添加或更新结果集中的文档时,您都需要支付读取费用。当文档因文档已更改而从结果集中删除时,您还需支付读取费用。(相比之下,删除文档后,您无需支付阅读费用。)

我的解释是,如果我这样做:

collectionRef.snapshots().listen((event) { ... });
Run Code Online (Sandbox Code Playgroud)

那么每次更改我应该获得 1 次阅读。

但是如果我使用collectionRef.snapshots()流来重建 UI(没有显式侦听器)怎么办?这会导致 1 次读取还是 N 次读取?

这最初被标记为与此重复。但问题是不同的,因为我询问的是在文档更改时监听父集合(而不是监听文档本身)。

Sim*_*ler 0

您的场景只能读取一次,但 30 分钟后,您将被收取 10 次读取的费用,再过 30 分钟,您将被收取另外 10 次读取的费用,依此类推...

我不知道为什么 Cloud Firestore 会在 30 分钟后重新读取整个集合收费。数据已经在本地缓存中。它应该只需要读取自最后一个侦听器处于活动状态以来的更改。