Firebase 查询的读取计数

Firebase read count for queries

提问人:berryestate968 提问时间:11/8/2023 最后编辑:Alex Mamoberryestate968 更新时间:11/8/2023 访问量:36

问:

我正在使用 Swift 5 为 iOS 编写代码。我一直在阅读 Firebase 文档,并了解到 Firebase 的工作原理是计算它访问的每个文档的读取次数,而不管其中的字段数据如何。

所以现在,我有一个Firestore设置如下:

[收藏] 用户名

  • [文件] johndoe
    • [领域] 名称:John Doe
    • [领域] 年龄:21岁
    • [领域]性别:男
  • [文件] janesmith
    • [领域] 姓名:简·史密斯
    • [领域] 年龄:25岁
    • [领域]性别:女
  • [文档] johnnybloggs
    • [领域] 名称:Johnny Bloggs
    • [领域] 年龄:30岁
    • [领域]性别:男

我有 2 个问题:

问1:

Firestore.firestore().collection("username").whereField("name", isEqualTo: "Spider Man").getDocuments()

我用 搜索所有用户名,并尝试匹配“名称”。在上面的示例中,该名称不存在,因此我预计会出现“未找到用户名”错误。 问题是,既然它需要访问所有文档才能真正找出哪些文档具有匹配的名称,那么这会算作 3 次读取吗?还是 0 阅读?getDocuments()

问2:

Firestore.firestore().collection("username").document("spiderman").getDocument()

我使用给定的特定用户名搜索文档。同样,我期待“未找到用户名”错误。这会算作 0 吗?

提前致谢!

我尝试了上面的所有方法,但我看不到任何读取触发,所以我不太确定自己如何跟踪它。

iOS Swift Firebase 平台 谷歌云 Firestore

评论


答:

2赞 Alex Mamo 11/8/2023 #1

问题1

您始终需要支付与查询返回的文档数相等的读取操作数。但是,如果您的查询没有产生任何结果,根据有关Firestore定价的官方文档,它说:

查询的最低费用

对于您执行的每个查询,即使查询未返回任何结果,也要支付读取一个文档的最低费用。

因此,例如,如果您尝试查询 1.000 个用户但没有得到任何结果,您仍然需要支付一次读取费用。另请注意,没有“未找到用户名”错误。如果查询未返回任何文档,Firestore 不会引发异常。

问题2

调用 getDocument() 来读取文档在所有情况下都需要执行一次读取操作。

评论

0赞 Alex Mamo 11/9/2023
嘿,你好。我的回答有帮助吗?我能帮你提供其他信息吗?
1赞 berryestate968 11/9/2023
是的,谢谢!