Firestore文档快照如何工作?

时间:2020-07-03 14:18:30

标签: firebase flutter google-cloud-firestore

添加新文档时,快照会提取所有文档,包括新文档还是仅获取新添加的文档?如果它每次都获取所有文档,那么它将增加开票费用。如何解决这个问题?

StreamBuilder(
          stream:Firestore.instance
              .collection('chat')
              .orderBy('timeStamp', descending: true).snapshots(),
          builder: (context, streamSnapshot) {}
);

2 个答案:

答案 0 :(得分:1)

snapshots()侦听器保持活动状态时,服务器会主动监视与您的侦听器相关的更改。发生此类更改时,它只会向您发送新的文档或已更改的文档给您的客户。然后,客户端将这些更新与其本地数据合并,并为您提供新的完整QuerySnapshot

答案 1 :(得分:1)

根据官方文档:Here

有两种方法来检索存储在Cloud Firestore中的数据。这些方法都可以与文档,文档集合或查询结果一起使用:

  • 调用方法以获取数据。
  • 设置一个侦听器以接收数据更改事件。

设置侦听器时,Cloud Firestore会向侦听器发送数据的初始快照,然后在每次文档更改时发送另一个快照。

您可以使用QuerySnapshot的docs属性获取文档快照的数组。之后,您将不得不遍历获取文档快照的数据以查找您的文档。

,如果您实际上并不需要完整的QuerySnapshot,则可以在调用查询对象的get之前使用where函数应用过滤器

这是获取文档的最有效方法。