我在问我是否有这个firebase数据库
Misters
+ 7m1fyYchDscr8tUeI13uPXvdDvM2
+ gvTVc3gwRfTz3WL48vTGiiiTKZ22
- vWZ55LGiraaIErIiiVN4NVQc6Eh1
active_type:true
age: 27
如果父节点已删除,如何阻止添加新节点或更新现有节点 (vWZ55LGiraaIErIiiVN4NVQc6Eh1)?
例如,我有防止更新的规则
{
"rules": {
".read": true,
".write": "auth != null",
"Misters": {
"$Misterid": {
"active_type:true": {
".validate": "(data.val() == null) || (data.isString() && (data.val().length == 0))"
}
}
}
}
但我想阻止父母找不到
答案 0 :(得分:1)
基本上会发生的是,如果我理解正确,你的写操作将重新创建已删除的“vWZ55LGiraaIErIiiVN4NVQc6Eh1”。
所以我会做这样的事情:
{
"rules": {
".read": true,
".write": "auth != null",
"Misters": {
".write" : "root.child('Misters').hasChild(<Misterif>)"
"$Misterid": {
"active_type:true": {
".validate": "(data.val() == null) || (data.isString() && (data.val().length == 0))"
}
}
}
}
答案 1 :(得分:1)
这包括一个exists()方法,它将检查MistersAdded映射以查看它是否曾被创建过。如果您希望能够让用户删除地图,请添加“ ||”写规则背后的data.val()== null 。
{
"rules": {
".read": true,
".write": "auth != null",
"Misters": {
"$Misterid": {
"active_type:true": {
".write": !root.child('MistersAdded').child($Misterid).exists()
".validate": "(data.val() == null) || (data.isString() && (data.val().length == 0))"
}
}
}
}
答案 2 :(得分:1)
你真的想在&#34;规则中做到这一点吗?这意味着您无法选择逻辑应用。我建议以编程方式进行。
syn0
我希望有所帮助。这样做意味着您可以做的不仅仅是验证,甚至可以通知您的用户并执行UI操作。