【发布时间】:2019-05-07 09:31:42
【问题描述】:
简单场景:
- 我有一个名为“foo”的集合
- 它有一个 ID 为“bar”的文档
- “bar”有一个名为“sample”的字符串字段,值为“fail”
如果我在我的规则集中尝试这样的事情:
service cloud.firestore {
match /databases/{database}/documents {
// Test rule
match /foo/{id} {
allow read: if resource.data.sample == 'fail';
}
}
}
当我在查询中指定文档 ID 时,它可以在“栏”上查询,但如果我尝试列出所有项目,则查询返回“缺少或权限不足。”。我也尝试了allow read: if get(/databases/$(database)/documents/foo/$(id)).data.sample == 'fail';,得到了相同的结果。
集合中只有一条记录,当我引用数据 ID 时,我可以单独查询它。我知道要使查询正常工作,过滤条件需要与规则匹配。在这种情况下,我没有应用任何过滤器,但应该返回所有 (1) 条记录。
我很难找到解决方案。我看到的所有解决方案都说查询结果需要匹配规则,在这种情况下它们应该匹配。
【问题讨论】:
-
要在这里完整,可以编辑问题以显示无法按您期望的方式工作的客户端代码吗?
-
今天运行良好,我没有更改任何内容。真奇怪。无论如何,我会关闭它。
标签: firebase google-cloud-firestore firebase-security