由于验证规则而从Firebase数据库中删除数据的问题

时间:2016-09-14 18:27:41

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

这就是我所拥有的:

 "products": {
        "$pid": {
            ".read": true,
            ".write": "auth != null && (newData.child('quantity').val() > 0)",
            ".indexOn": ["subgroup", "group", "visibility"]
        },
        ".read": true

现在,如果我尝试删除,我会遇到异常。

  

firebase.js:281 FIREBASE警告:设置为/ products / -KRdvStz-6EQ6OUJJcld失败:permission_denied

我真的需要有数量> = 0的验证规则。但我还需要能够删除。

知道这里需要做什么吗?

1 个答案:

答案 0 :(得分:1)

要验证数据结构,您应该使用.validate规则:

"products": {
    "$pid": {
        ".read": true,
        ".write": "auth != null",
        ".validate": "newData.child('quantity').val() > 0",
        ".indexOn": ["subgroup", "group", "visibility"]
    },
    ".read": true

验证规则不会在数据删除时被触发,特别是允许它们很容易用于此。

如果您坚持使用写入规则进行验证,您也可以这样做:

".write": "auth != null && (!newData.exists() || newData.child('quantity').val() > 0)",