Firebase Firestore 快照读取计数

Posted

技术标签:

【中文标题】Firebase Firestore 快照读取计数【英文标题】:Firebase Firestore snapshot read count 【发布时间】:2020-02-04 17:04:22 【问题描述】:

我正在尝试优化我的应用在 Firesbase 上的读取次数,并查看我使用快照监控实时更改的方式。想象一下,我有一个返回 10 个最新文档的快照,如下所示:

db.collection("cities")
.where("state", "==", "CA").
.orderBy('dateadded', 'desc').limit(10)
.onSnapshot(function(snapshot) 
    ...
)

医生说

快照处理程序将收到一个新的查询快照,每次 查询结果发生变化(即,当文档被添加、删除或 修改)。

这是否意味着每次查询更改时,我都会被收取 10 次读取费用?在此示例中,如果添加了一个新城市(因此使用最新的“添加日期”,因此在查询中排在第一位)它将是 1(只是新城市)还是 10 次读取(完整查询)。

作为一个附带问题,我可以看到我所处的确切读取次数(实时,因此我可以测试一个函数并查看相应的读取次数)。 IAM 和管理员/配额似乎在“每天读取请求”下提供,但它不是实时的......

我指的是 https://firebase.google.com/docs/firestore/query-data/listen 中描述的 Firestore 快照

【问题讨论】:

【参考方案1】:

如果查询结果中有 1 个文档发生更改,您需要支付 1 次阅读费用。您无需为未更改的单据付费。查询快照对象仅重用内存中来自先前结果集的文档数据。

【讨论】:

好的。但请注意,在我给出的示例中,未更改的文档实际上改变了查询结果中的位置(第 1 变为第 2,第 2 变为第 3,依此类推) - 你的答案仍然相同吗?窗台 1 读了吗? 关于我的实时消费问题的任何线索? 1 查询 1 读???这对我来说毫无意义......如果我的查询使用 !M+ doc 读取我的整个集合,那不能是 1 次读取! 您最初需要支付 10 美元的费用,然后为之后在结果中更改的每个文档收取 1 美元费用,只要侦听器保持活动状态。 这只是部分正确,只要客户端保持连接,您就不会为未更改的文档付费。来自官方文档:另外,如果监听器断开连接超过 30 分钟(例如,如果用户离线),您将被收取读取费用,就像您发出了全新的查询一样。。所以要小心 来源:firebase.google.com/docs/firestore/pricing#operations

以上是关于Firebase Firestore 快照读取计数的主要内容,如果未能解决你的问题,请参考以下文章

firebase Firestore 文档已读取

本地写入带有附加侦听器的 Firebase RTDB 或 Firestore 是不是需要读取操作?

Flutter:Firebase 身份验证和 Firestore 快照流

Firebase Firestore。快照上的“成本”

在 Firebase Firestore 中映射集合快照项

Firestore:如果两个侦听器监听相同的查询 firebase 维护两个不同的查询快照?