我可以将一个孩子设置为.write吗?

时间:2019-01-17 10:18:06

标签: firebase firebase-realtime-database

我有一个名为“服务”的对象,任何人都可以读取,但只能由所有者进行更改。我为此的firebase规则是:-

"Service": {
".read": true,
"$uid":  {
    ".write": data.child('owner').val() == auth.uid"
   }
}

服务有一个名为“所有者”的子代,当通过Firebase Auth登录时,该子代==用户UI。

我还有一个User对象,可以将Service作为收藏夹。我将这些保存为[businessKey:true]数组。

但是,我被要求也将用户喜欢它的反向关系保存在Service对象中。这样的数组但是,由于用户并不总是服务的所有者,因此我遇到了权限错误。我正在尝试编写规则,允许任何人写给一个孩子,但不能写给其他孩子。

我尝试过...

"Service": {
".read": true,
"$uid":  {
    ".write": data.child('owner').val() == auth.uid" || data.child('users').val() != root.child('users').val()"
   }
}

如果用户是服务所有者或仅更改子用户“ users”,这将允许写操作。结果是,任何用户都可以写任何东西。

我也尝试过

"Service": {
".read": true,
"$uid":  {
    "$users": {
        ".write" : true,
    },
    ".write": "data.child('owner').val() == auth.uid"
    } 
}

认为这将始终允许写入“用户”和其他任何子级(如果用户是所有者)。

我对firebase还是很陌生,因此通常会使用语法规则,所以我可能会犯一些明显的错误!如果我想实现什么可能?我怎么了?

0 个答案:

没有答案