firebase规则,所有者可以删除

时间:2018-04-20 18:24:36

标签: javascript firebase firebase-realtime-database firebase-security-rules

我是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)
    }
})

我获得了许可拒绝错误。

1 个答案:

答案 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())"