Firebase realtime database 如何编写规则以防止从数据库中删除节点

Firebase realtime database 如何编写规则以防止从数据库中删除节点,firebase-realtime-database,firebase-security,Firebase Realtime Database,Firebase Security,我正在尝试编写规则来保护数据库。但我对编写一条规则感到困惑,该规则将阻止从数据库中删除任何节点。我已经阅读了有关newData.exists的内容,但是当我尝试在模拟器中运行它时,删除成功了!由于可以通过将节点的值设置为null来删除节点,因此我尝试将节点的值模拟为null,结果成功,这是不需要的 假设我有这个节点: root{ Number of Users:20 } 我写了这些规则: "Number of Users":{ ".read":true, ".write":"auth!==n

我正在尝试编写规则来保护数据库。但我对编写一条规则感到困惑,该规则将阻止从数据库中删除任何节点。我已经阅读了有关
newData.exists
的内容,但是当我尝试在模拟器中运行它时,删除成功了!由于可以通过将节点的值设置为null来删除节点,因此我尝试将节点的值模拟为null,结果成功,这是不需要的

假设我有这个节点:

root{
Number of Users:20
}
我写了这些规则:

"Number of Users":{
".read":true,
 ".write":"auth!==null && newData.exists()"
 }

如果我有任何错误,请更正。

要允许添加新节点,但防止删除或覆盖任何节点,请执行以下操作:

".write": "!data.exists()"
".write": "newData.exists()"
要允许添加和覆盖但不删除任何节点,请执行以下操作:

".write": "!data.exists()"
".write": "newData.exists()"
更新:这些规则的模拟器屏幕截图

我正在使用newData.exists()和auth=null,通过将该节点的值设置为null,将删除该节点。我如何预防它?我已经检查了模拟器。我刚刚测试并添加了一个屏幕截图,我的模拟器拒绝了空值。我得到了它。我没有正确使用模拟器。我是通过向该节点下的新节点添加空值来模拟的,而不是向该节点本身写入空值!