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

问题描述:

我正在尝试编写规则来保护数据库。但我很困惑写一个规则,它会阻止从数据库中删除任何节点。我已阅读关于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()" 

更新:截图这些规则的模拟器 Cannot write null

+0

我正在使用newData.exists()和auth! = null,并通过设置该节点的值= null,该节点被删除。我如何防止它?我已经在模拟器中检查过。 –

+0

我刚刚测试并添加了我的模拟器屏幕截图,拒绝null。 –

+0

我明白了。我没有正确使用模拟器。我正在通过向该节点下的新节点添加空值而不是将空值写入该节点本身来进行模拟! –