【发布时间】:2017-09-18 00:48:01
【问题描述】:
我正在尝试保护我的新 firebase 数据库。
我的结构:
parentNode
-- child1
-- child2
我想阻止
- 删除 parentNode 中的所有子节点(忘记指定 $key,写入 /parentNode)
我希望能够:
- 将新的子节点推送到 parentNode(写入 /parentNode)
- 通过 $key 删除一个子节点(写入 /parentNode/$key)
- 通过 $key 删除 parentNode 中的 LAST 子节点(写入 /parentNode/$key,firebase 会自动清理 parentNode,因为它是 emtpy)
我目前的(非常基本的......)解决方案:
parentNode: {
".write": "newData.exists()",
}
这可以防止从父级删除所有数据,但也可以防止删除唯一的子级,因为这意味着父级没有剩余的 newData。
任何指针?
解决方案:
下面弗兰克的回答是正确的。我之前尝试过,但没有成功,因为我没有从 childNode 中创建变量 - 因为我不打算使用它。
"parentNode:" {
"childNode": { // <-- This was the problem
".write": "data.exist() || newData.exists()"
}
}
正确的版本:
"parentNode:" {
"$childNode": { // <-- Notice the $
".write": "data.exist() || newData.exists()"
}
}
Firebase 最终忽略了我的规则,因为不存在名为“childNode”的节点。
【问题讨论】:
标签: firebase firebase-realtime-database firebase-security