1

teams我正在尝试重写我的数据库规则,仅当特定“集合”的成员包含在列表中时才允许访问该集合。参考下面附上的图片,这是我的规则目前的样子:

    {
        "rules": {
            "collection": {
                "$collection_id": {
                    "$teams" : {
                        ".read": "data.child('id').val() === auth.uid"
                    }
                }
            }
        }
    }

在此处输入图像描述

然而,这似乎不起作用,我相信它是不完整的。如何更新我的规则以匹配此设计结构?如果需要对我的结构进行任何更改来支持这一点,请进行宣传,我将尝试更新当前的生产数据。

4

1 回答 1

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"
            }
        }
    }
}
于 2018-06-18T17:22:23.283 回答