如何根据同级节点保护Firebase节点?

如何根据同级节点保护Firebase节点?,firebase,firebase-realtime-database,firebase-security,Firebase,Firebase Realtime Database,Firebase Security,我需要在Firebase中实现一些规则来保护我的数据 假设我有nodea和nodeb。结构如下: { a: [ a1: {uid: 123}, a2: {uid: 321}, a3: {uid: 567} ], b: [ a1: {data: 'foo.bar'}, a2: {data: 'foo.bar'}, a3: {data: 'foo.bar'}

我需要在Firebase中实现一些规则来保护我的数据

假设我有nodea和nodeb。结构如下:

{
    a:
    [
        a1: {uid: 123},
        a2: {uid: 321},
        a3: {uid: 567}
    ],
    b:
    [
        a1: {data: 'foo.bar'},
        a2: {data: 'foo.bar'},
        a3: {data: 'foo.bar'}
    ]
}
如上例所示,a的子节点是节点b的键。如何根据节点auid限制对节点b数据的访问


比如说。在节点a中具有uid123的用户,其密钥是a1,因此,在节点b中,只能从子节点a1(b->a1)检索数据。

我认为这样的规则系统符合您的要求:

{
“规则”:{
“b”:{
“$key”:{
.read:“auth.uid==root.child('a').child($key).child('uid').val()”,
.write:“auth!==null”
}
}
}
}
在本例中,
$key
是一个与节点
b
列表下的任何键匹配的键

然后,我们可以使用此
$key
变量将匹配到
a
下相应节点的
uid
,使用

结果是,只有当
a
下具有相同键的相应子级的
uid
与当前用户的
uid
匹配时,才会授予
b
下的子级读取权限