我正在尝试重写我的数据库规则,只允许特定“集合”的成员访问该集合,只有该成员包含在teams
列表中。参考下面附带的图片,这是我的规则目前的样子:
{
"rules": {
"collection": {
"$collection_id": {
"$teams" : {
".read": "data.child('id').val() === auth.uid"
}
}
}
}
}
然而,这似乎不起作用,我相信它不完整。如何更新我的规则以匹配此设计结构?如果需要对我的结构进行任何更改以支持这一点,请进行调整,然后尝试更新当前的生产数据。
答案 0 :(得分:1)
您可以像这样进入teams
节点:
{
"rules": {
"collection": {
"$collection_id": {
".read": "data.child('teams').child(auth.uid).child('id').val() === auth.uid"
}
}
}
}
现在,teams
节点中存在不必要的冗余。子节点的id在其自己的子ID中重复。如果只是在数据库中设置teams/{teamId} = true
,则可以简化数据库和规则,而规则可能看起来像这样,只允许团队中列出的用户阅读整个集合:
{
"rules": {
"collection": {
"$collection_id": {
".read": "data.child(auth.uid).val() === true"
}
}
}
}