我是Firebase的新手。我正在尝试设置规则,我正在使用此规则让只有用户评论所有者才能编写。问题是它需要海报id(所有者ID),但是当我尝试删除节点时它不起作用,因为我不能用它发送海报id(可以吗?)。这是规则:
"infinity_comments":{
"country": {
"$countryid": {
"$postid": {
"$pushid": {
".write": "(!data.exists() && newData.child('posterid').val() == auth.uid ) || (data.child('posterid').val() == auth.uid && newData.child('posterid').val() == auth.uid)"
}
}
}
}
},
这是我尝试删除评论的方式:
firebase.database().ref('infinity_comments/country/countryid/postid/pushid/').remove(function(error){
if (!error) {
alert('success');
}
else {
alert(error)
}
})
我获得了许可拒绝错误。
答案 0 :(得分:1)
您的权限被拒绝,因为删除实际上是一个空值的写入操作。您可以更新规则,添加如下所示的新OR子句:
".write": "(!data.exists() && newData.child('posterid').val() == auth.uid )
|| (data.child('posterid').val() == auth.uid && newData.child('posterid').val() == auth.uid)
|| (data.child('posterid').val() == auth.uid && !newData.exists())"