Firebase Firestore文档快照是如何工作的?

Firebase Firestore文档快照是如何工作的?,firebase,flutter,google-cloud-firestore,Firebase,Flutter,Google Cloud Firestore,添加新文档时,快照将获取所有文档,包括新文档还是仅获取新添加的文档?如果它每次都获取所有文档,那么它将增加计费成本。如何解决这个问题 StreamBuilder( stream:Firestore.instance .collection('chat') .orderBy('timeStamp', descending: true).snapshots(), builder: (context, st

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

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

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

有两种方法可以检索存储在CloudFireStore中的数据。以下任一方法均可用于文档、文档集合或查询结果:

  • 调用一个方法来获取数据
  • 设置侦听器以接收数据更改事件
设置侦听器时,Cloud Firestore会向侦听器发送数据的初始快照,然后在每次文档更改时发送另一个快照

您可以使用QuerySnapshot的docs属性获取文档快照数组。之后,您必须循环获取文档快照的数据以查找您的文档

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

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