0
我目前正在创建Firebase安全规则,以防止用户将节点设置为空并删除该节点中的所有数据。Firebase数据库删除安全规则
这是我的架构
{
"folder" : {
"item1" : {
"dataset1" : {
"data1" : 123,
"data2" : 456,
"data3" : 789
}
}
}
}
这是我的规则
{
"rules": {
"folder": {
// users cannot delete items in the node folder
".write": "newData.exists()",
// item is a variable
"$item": {
"dataset1": {
// dataset1 must have certain nodes and can't be deleted (set to null)
".validate": "data.hasChildren(['data1', 'data2', 'data3']) && newData.exists()",
"data1": {".validate": "newData.isNumber()"},
"data2": {".validate": "newData.isNumber()"},
"data3": {".validate": "newData.isNumber()"},
// using the variable $other means any node that isn't data1, data2, data3 is denied
"$other": {".validate": false}
}
}
}
}
}
使用内置的模拟器我得到这些结果:
这工作时,位置设置为“/ folder/item1”和“/ folder/item1/data” SET1"
如果我在Data1有更深层次的节点,他们将全部被删除,因为写是允许的。
感谢您阅读。打开任何答案,最好我不需要更改架构。
嗨,我在第2点使用了你的建议。我用“newData.hasChildren([example,example])”来确保这些孩子不能被删除。谢谢你的帮助! –