我有一个名为“服务”的对象,任何人都可以读取,但只能由所有者进行更改。我为此的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还是很陌生,因此通常会使用语法规则,所以我可能会犯一些明显的错误!如果我想实现什么可能?我怎么了?