【问题标题】:Firebase Firestore: Rules filtering read countsFirebase Firestore:过滤读取计数的规则
【发布时间】:2019-11-14 22:33:35
【问题描述】:

如果我有 10,000 条记录,其中 5 条有我的电子邮件,我的规则是

allow read: if (resource.email == auth.token.email);

每次我直接阅读db.collection('x') 时,我是否会得到 5 个文档的结果:

我会为 510,000 次读取付费吗?

【问题讨论】:

    标签: firebase google-cloud-firestore firebase-security


    【解决方案1】:

    您无需为未传输给客户的文件付费。如果您的查询返回 X 文档,您将被计费 X 读取。安全规则不会改变这一事实。

    您还应该知道security rules are not filters(请阅读并理解该链接)。来自网络或移动客户端的任何查询都是全有或全无。如果安全规则不只请求规则满足的文档,它将拒绝对查询的访问。规则不会检查每个文档以查看它是否与规则匹配 - 这根本不会扩展。您的查询需要包含一个与规则要检查的内容相匹配的过滤器。

    【讨论】:

    • 谢谢!我希望我可以将两个答案标记为正确,您的答案和@Frank 的答案同样有帮助!
    【解决方案2】:

    规则不限制读取的内容。只有代码中的查询才能做到这一点。

    如果您的查询仅读取 5 个在其 email 字段中包含您的电子邮件地址的文档,您将需要为这 5 个文档付费。

    【讨论】:

    • 谢谢!我希望我可以将两个答案标记为正确,您的答案和@Doug 的答案同样有帮助!
    • 不用担心。道格比我快一点,并且写的答案更长,所以他应该得到更多的荣誉。 :)
    猜你喜欢
    • 1970-01-01
    • 2020-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-24
    • 2020-02-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多