Firebase规则:如何防止使用SetValue()删除(Android)

时间:2019-04-03 18:05:32

标签: android database firebase rules setvalue

我有这个结构

 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()方法,因为我只能设置,更新和读取。

0 个答案:

没有答案