Hon*_*Guy 2 firebase google-cloud-firestore firebase-security-rules
如果我的文档保存在/recordTypeX/{autoKey},结构如下:
memberUserIds [object]
hjfjkh32390u09j: true
kjsklfjkslfklj3: true
....
skfksdjk2249fks: true
someStringField: "Bork, bork, bork!"
someNumericField: 88
Run Code Online (Sandbox Code Playgroud)
如何编写安全规则以检查是否存在memberUserIds?我尝试了以下操作,但是CLI不喜欢该语法。
allow read if resource.data.memberUserIds.$(request.auth.uid) == true;
我知道变量可以在get()和的路径中使用exists(),因此我认为也可以使用变量寻址字段,但是我无法克服语法错误。这可能吗?
在某些背景下,我试图在集合中的每个文档上维护一个(小)userId列表,以便我可以进行查询,以使我可以检索当前用户所属的集合中的所有文档。
我在阅读了Firebase文档中曾经使用过的指南(称为列表,集合和数组)后,采用了这种方法。
感谢您的任何想法。
这是我的基本火力规则之一的示例。
function containsResourceOwnerId() {
// /database/{database}/documents/example/{exampleId}
// exampleDocument => { abc123: true }, request.auth.uid = abc123
return resource.data[request.auth.uid] == true;
}
Run Code Online (Sandbox Code Playgroud)
您应该可以使用以下内容
function isMemberOf() {
return resource.data.memberUserIds[request.auth.uid] == true;
}
Run Code Online (Sandbox Code Playgroud)
并在需要的地方使用规则。
match /teams/{teamsId} {
allow read: if isMemberOf();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1476 次 |
| 最近记录: |