删除 firebase 节点中的最后一个子节点
Delete last child in firebase node
我正在尝试保护我的新 firebase 数据库。
我的结构:
parentNode
-- child1
-- child2
我想阻止
- 删除 parentNode 中的所有子节点(通过忘记指定 $key,写入 /parentNode)
我希望能够:
- 将一个新的子节点推送到 parentNode(写入 /parentNode)
- 通过$key删除一个子节点(写入/parentNode/$key)
- 通过$key删除parentNode中的LAST子节点(写入/parentNode/$key,firebase自动清理parentNode,因为它是emtpy)
我当前(非常基本...)的解决方案:
parentNode: {
".write": "newData.exists()",
}
这可以防止从父级删除所有数据,但也可以防止删除唯一的子级,因为这意味着父级没有新数据。
有什么指点吗?
解决方案:
弗兰克在下面的回答是正确的。我以前试过这个,但没有用,因为我没有从 childNode
中创建变量 - 因为我不打算使用它。
"parentNode:" {
"childNode": { // <-- This was the problem
".write": "data.exist() || newData.exists()"
}
}
正确版本:
"parentNode:" {
"$childNode": { // <-- Notice the $
".write": "data.exist() || newData.exists()"
}
}
Firebase 最终忽略了我的规则,因为不存在名称为 'childNode'.
的节点
重要的规则是始终在正确的级别上执行您的要求。由于您的规则似乎适用于子节点,因此您应该在此处强制执行它们。
我想你正在寻找类似的东西:
parentNode: {
"$childNode": {
".write": "data.exists() || newData.exists()",
}
}
所以你可以写任何你想要的,或者你可以写 null
如果那里有一个现有的值。
我正在尝试保护我的新 firebase 数据库。
我的结构:
parentNode
-- child1
-- child2
我想阻止
- 删除 parentNode 中的所有子节点(通过忘记指定 $key,写入 /parentNode)
我希望能够:
- 将一个新的子节点推送到 parentNode(写入 /parentNode)
- 通过$key删除一个子节点(写入/parentNode/$key)
- 通过$key删除parentNode中的LAST子节点(写入/parentNode/$key,firebase自动清理parentNode,因为它是emtpy)
我当前(非常基本...)的解决方案:
parentNode: {
".write": "newData.exists()",
}
这可以防止从父级删除所有数据,但也可以防止删除唯一的子级,因为这意味着父级没有新数据。
有什么指点吗?
解决方案:
弗兰克在下面的回答是正确的。我以前试过这个,但没有用,因为我没有从 childNode
中创建变量 - 因为我不打算使用它。
"parentNode:" {
"childNode": { // <-- This was the problem
".write": "data.exist() || newData.exists()"
}
}
正确版本:
"parentNode:" {
"$childNode": { // <-- Notice the $
".write": "data.exist() || newData.exists()"
}
}
Firebase 最终忽略了我的规则,因为不存在名称为 'childNode'.
的节点重要的规则是始终在正确的级别上执行您的要求。由于您的规则似乎适用于子节点,因此您应该在此处强制执行它们。
我想你正在寻找类似的东西:
parentNode: {
"$childNode": {
".write": "data.exists() || newData.exists()",
}
}
所以你可以写任何你想要的,或者你可以写 null
如果那里有一个现有的值。