【问题标题】:First query snapshot of snapshotListenersnapshotListener 的第一个查询快照
【发布时间】:2019-11-29 11:05:39
【问题描述】:

根据 Firebase - Firestore 文档,当我们根据查询启用侦听器时,snapshotListeners 会提供所有可用记录。

Firestore 文档:

第一个查询快照包含与查询匹配的所有现有文档的添加事件。这是因为您正在获得一组更改,这些更改使您的查询快照与查询的初始状态保持同步。例如,这使您可以直接根据您在第一个查询快照中收到的更改填充您的 UI,而无需添加特殊逻辑来处理初始状态。

据我了解,无法禁用此功能,但有一些解决方法。

我的问题是,对于第一次初始化期间收到的每条记录,这种行为是否算作一次读取?

【问题讨论】:

    标签: firebase google-cloud-firestore


    【解决方案1】:

    我的问题是,这种行为是否算作每条记录的一次读取 是否在第一次初始化期间收到?

    答案是肯定的:“查询的初始状态”意味着查询对应的所有文档都被读取。


    但是,正如documentation 中所述:

    初始状态可以直接来自服务器,也可以来自本地 缓存。如果本地缓存中有可用的状态,则查询 快照最初将填充缓存数据。

    如果初始状态来自本地缓存(请参阅offline data persistence),它将不计入任何读取。

    【讨论】:

    • 所以,当我启用一个监听器时,即使云上没有任何变化,快照也会为我提供添加的记录。如果有 20 条记录与我的查询匹配,则仅启用侦听器将花费我 20 次读取。这是正确的吗?
    • 我已经修改了答案。如果您之前获取了 same 集合/查询而不是您收听的集合/查询,并且结果在缓存中:那么“初始状态将来自本地缓存。
    猜你喜欢
    • 2021-06-17
    • 2020-03-13
    • 1970-01-01
    • 1970-01-01
    • 2018-09-22
    • 1970-01-01
    • 2017-12-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多