我有这个结构
Events {
ID: { //Event ID
name: ...
image: ...
}
}
我想使用规则来阻止此命令:
Firebase.getInstance().getReference().child(Events).child(ID).setValue(null);
(例如,如果我的HashMap为空,而不是setValue,我只是将值设置为null(因此我有一天删除了整个数据库)
但是我仍然希望能够做到这一点:
Firebase.getInstance().getReference().child(Events).child(ID).removeValue();
我现在有那些规则:
"Events" : {
"$Ev_key" : {
".write":"auth.uid!=null",
".read":"auth.uid != null",
".validate" : "newData.hasChildren(['name']) || newData.hasChildren(['image'])",
"name" : {
".validate" : "newData.isString() && newData.val().length < 25"
},
"image" : {
".validate" : "newData.isNumber() && newData.val() >= 0 && newData.val() <= 100"
},
"$other": {
".validate": false
}
}
},
=>他们允许我:
-.... child(“ name”)。setValue(“ Something”) -.... child(“ image”)。setValue(“ Something”)
-使用名称,图像创建HashMap并更新子级。
/ !! \但仍然,如果我尝试执行事件/ ID并发送nullJson,则模拟成功,并且显示“验证已忽略” 而且,我仍然不知道如何区分setValue()和removeValue()方法,因为我只能设置,更新和读取。