我的firebase数据库中有以下结构:
{
rooms: {
roomId$: {
users: {...},
name: "Room Name",
password: "abc123",
owner: "ownerId"
}
}
}
我想允许读取除密码以外的每个字段。 所以,我创建了以下规则:
"rooms": {
"$roomId": {
"name": {
".read": "true"
},
"users": {
".read": "true"
},
"owner": {
".read": "true"
},
"password": {
".read": "data.parent().child('owner').val() === auth.uid",
".write": "data.parent().child('owner').val() === auth.uid"
}
}
}
问题是 - 是否可以在$roomId
级别同时阅读所有房间信息,同时隐藏password
字段?或者单独嵌套公共和私人领域是唯一的方法吗?
答案 0 :(得分:0)
您可以将房间的私人数据移动到另一个"分支"在JSON树中,类似这样:
{
rooms: {
roomId$: {
users: {...},
name: "Room Name",
owner: "ownerId"
}
}
roomsprivateinfo: {
roomId$: {
owner: "ownerId",
password: "abc123"
}
}
}
这种方法可让您为"房间"写一条规则。允许公共访问的分支,然后为" roomsprivateinfo"写一个单独的规则。限制访问的分支。所有者存储在两个树中,以使规则更容易编写。
每次添加包含房间信息的新字段时,此方法也不要求您编写新规则。