假设我有一个具有以下结构的数据库:
是否可以编写一条规则,如果存在权限p,允许用户修改空间,其中p.userId = auth.uid和p.roomId = $ rId和p.permission =&#39 ;管理员'"
据我所知,如果没有在每个房间下嵌套许可信息,就不可能。
答案 0 :(得分:1)
您需要稍微更改一下结构。而不是使用推送ID来识别权限,而是使用更受控制的结构。例如:
"Permissions": {
"roomId": {
"userId": "role"
}
}
现在您可以根据需要保护房间:
{
"rules": {
"Room": {
"$rId": {
".write": "root.child('Permissions').child($rId).child(auth.Id).val() == 'admin'"
}
}
}
}
另一个好处是,如果您想要撤销用户的许可,则无需扫描所有权限。