我试图让用户仅在此文档中的字段等于其他文档列表中的字段时才可以阅读文档。
我的数据库是这样的:
订单收集
Order 1
id: order1
Order 2
id: order2
OrderLines集合
ljsdfozdkfjz
order: order1
ozjehfeofheof
order: order1
ojezihfoekfjf
order: order32
pjeopajfoekfss
order: order69
如果文档包含用户有权访问的订单的订单ID,我希望用户能够读取OrderLines集合中的所有订单行。
我尝试了此安全规则:
service cloud.firestore {
match /databases/{database}/documents {
match /OrderLines/{OrderLinesId=**} {
allow read: if resource.data.order == get(/databases/$(database)/Orders/{OrderId}).data.id;
}
}
}
但是它不起作用
答案 0 :(得分:0)
您应该注意安全规则的一些限制。首先,您无法在规则中执行查询。您只能指示您要阅读单个文档。您必须能够通过其唯一路径引用该文档。无法读取整个收藏集。其次,每个规则只能读取10个文档。
鉴于您当前的设置,无法编写符合您需要的规则。您可能想考虑一个不同的(附加)数据库结构,也许它需要一个文档,该文档的字段是要检查的值数组。