【问题标题】:How does Firestore document snapshot work?Firestore 文档快照如何工作?
【发布时间】:2020-07-03 14:18:30
【问题描述】:

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

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

【问题讨论】:

    标签: firebase flutter google-cloud-firestore


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      根据官方文档:Here

      有两种方法可以检索存储在 Cloud Firestore 中的数据。这些方法中的任何一种都可以用于文档、文档集合或查询结果:

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

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

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

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

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

      【讨论】:

        猜你喜欢
        • 2019-08-02
        • 2020-09-26
        • 2022-01-25
        • 2021-09-27
        • 1970-01-01
        • 2018-08-22
        • 1970-01-01
        • 2018-03-19
        • 2019-09-03
        相关资源
        最近更新 更多