我有这个架构
"Photo": {
"$User": {
"$Photo": {
".validate": "auth.uid == $User && ((newData.hasChildren(['created', 'updated', 'image', 'title']) && data.val() == null && newData.val() != null) || data.val() != null && newData.val() != null && newData.child('updated').val() != null)",
"created": {
".validate": "newData.isNumber() && data.val() == null && newData.val() != null && newData.val() == now"
},
"updated": {
".validate": "newData.isNumber() && newData.val() == now"
},
"image": {
".validate": "newData.isString() && data.val() == null && newData.val() != null"
},
"title": {
".validate": "newData.isString() && newData.val().length > 3"
},
"$other": {
".validate": "false"
}
}
}
}
如果您看到我的验证规则
".validate": "auth.uid == $User && ((newData.hasChildren(['created', 'updated', 'image', 'title']) && data.val() == null && newData.val() != null) || data.val() != null && newData.val() != null && newData.child('updated').val() != null)"
我只为写入和更新写了一个权限,但是当我删除一个节点时我可以删除它。我的目标是阻止删除。为什么这个?哪里有错误?提前谢谢
答案 0 :(得分:0)
为此,您需要使用.write
规则,而不是.validate
规则。 From the docs:
此外,删除数据时(即,当写入的新值为null时)将忽略验证定义。