Stu*_*ent 1 firebase firebase-security firebase-authentication google-cloud-firestore
文档看起来像这样
matches: [
{uid: ___ , ...},
{uid: ___ , ...},
]
Run Code Online (Sandbox Code Playgroud)
如何检查请求此操作的用户的 uid 是否在匹配的 uid 之一中?我尝试过这个,但没有成功。
uid 输入get(/databases/$(database)/documents/users/$(request.auth.uid)).data.matches.uid
感谢您的帮助!
你不能。安全规则语言不支持for循环或类似的东西map。您需要以不同的方式存储数据。这些模式中的任何一个都可以工作:
// data structure
matches: ["uid1", "uid2", "uid3"]
// rules
allow: if uid in resource.data.matches;
// data structure
matches: {"uid1": true, "uid2": true}
// rules
allow: if resource.data.matches[uid] == true;
Run Code Online (Sandbox Code Playgroud)
或者,如果您知道matches数组的长度永远不能超过五个元素,您可以手动扩展该语句:
allow: if resource.data.matches[0].uid == uid ||
resource.data.matches[1].uid == uid ||
// ...repeat three more times
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1127 次 |
| 最近记录: |