通配符在火力地堡数据库规则
问题描述:
我们能否使用火力地堡数据库规则通配符?从我的实验来看,似乎并非如此。我错过了什么或者是应该发生什么?通配符在火力地堡数据库规则
所以,举例来说,我可能对所有products_*
项相同的规则,它会更容易在一起使用通配符组。
要澄清,这是一个web应用程序,我关心的是,我们在控制台设置数据库权限。我们可以在那里使用通配符吗?
例如,
{
"rules": {
"products_A": {
<rules>
},
"products_B": {
<rules>
}
}
我想只有1套,喜欢的规则:
{
"rules": {
"products_*": {
<rules>
}
}
感谢。
答
火力地堡提供用于表示ID和动态子键通配符路径。例如,下面的规则中的$ uid是一个'通配符',它允许该节点中的参数引用父节点。
{
"rules": {
"users": {
"$uid": {
".write": "$uid === auth.uid"
}
}
}
}
在上例中,$ uid是/ users节点内每个用户节点的通配符路径。以下是每个节点如何扩展上述规则:
users
uid_0 <--------|
V
".write": "uid_0 === auth.uid" //only user with uid = uid_0 can write
uid_1
".write": "uid_1 === auth.uid" //only user with uid = uid_1 can write
uid_2
".write": "uid_2 === auth.uid" //only user with uid = uid_1 can write
您可以对此进行扩展以提供极大的灵活性。假设你想让一定数量的用户能够访问组节点。组规则可以是
"rules": {
"Groups": {
"$group_id" : {
".read": "root.child('Allowed_Users/' + auth.uid).val() === $group_id",
".write": "root.child('Allowed_Users/' + auth.uid).val() === $group_id"
}
}
这将每个组节点的访问权限限制为在Allowed_Users节点中指定的某个用户组。在火力地堡数据库中的数据可能看起来像:
Groups
group_0
//data
group_1
//data
Allowed_Users
uid_0: group_0
uid_1: group_0
是这个例子中,用户uid_0和uid_1能读/写group_0但不读/写GROUP_1
安置自己的规则文本请,没有图像以及你试图通过通配符完成的事情,因为可能有解决方案。 – Jay
@Jay,澄清更新! – Ahsan
我发布了一个奇妙的答案,但因为我突然忘记了如何阅读它是完全错误的问题。在那个笔记上......现在还不清楚问题的症结所在 - 大多数firebase规则使用占位符来引用封闭的父节点。也许你可以发布你当前的规则,并描述你在做什么。 – Jay