添加新文档时,快照会提取所有文档,包括新文档还是仅获取新添加的文档?如果它每次都获取所有文档,那么它将增加开票费用。如何解决这个问题?
StreamBuilder(
stream:Firestore.instance
.collection('chat')
.orderBy('timeStamp', descending: true).snapshots(),
builder: (context, streamSnapshot) {}
);
答案 0 :(得分:1)
snapshots()
侦听器保持活动状态时,服务器会主动监视与您的侦听器相关的更改。发生此类更改时,它只会向您发送新的文档或已更改的文档给您的客户。然后,客户端将这些更新与其本地数据合并,并为您提供新的完整QuerySnapshot
。
答案 1 :(得分:1)
根据官方文档:Here
有两种方法来检索存储在Cloud Firestore中的数据。这些方法都可以与文档,文档集合或查询结果一起使用:
- 调用方法以获取数据。
- 设置一个侦听器以接收数据更改事件。
设置侦听器时,Cloud Firestore会向侦听器发送数据的初始快照,然后在每次文档更改时发送另一个快照。
您可以使用QuerySnapshot的docs属性获取文档快照的数组。之后,您将不得不遍历获取文档快照的数据以查找您的文档。
或,如果您实际上并不需要完整的QuerySnapshot,则可以在调用查询对象的get之前使用where函数应用过滤器
这是获取文档的最有效方法。