2017-01-29 27 views
3

我正在嘗試編寫規則來保護數據庫。但我很困惑寫一個規則,它會阻止從數據庫中刪除任何節點。我已閱讀關於newData.exists,但是當我嘗試運行它在模擬器刪除成功!由於可以通過將節點值設置爲null來刪除節點,所以我嘗試將節點的值模擬爲null,並且它是成功的,這是不期望的。如何編寫規則以防止從數據庫中刪除任何節點

假設我有這樣的節點:

root{ 
Number of Users:20 
} 

我寫這些規則:

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

我是否造成任何錯誤,請指正。

回答

7

要允許增加新的節點,但防止刪除或覆蓋任何節點:

".write": "!data.exists()" 

要允許添加和覆蓋,但不刪除,任何節點:

".write": "newData.exists()" 

更新:截圖這些規則的模擬器 Cannot write null

+0

我正在使用newData.exists()和auth! = null,並通過設置該節點的值= null,該節點被刪除。我如何防止它?我已經在模擬器中檢查過。 –

+0

我剛剛測試並添加了我的模擬器屏幕截圖,拒絕null。 –

+0

我明白了。我沒有正確使用模擬器。我正在通過向該節點下的新節點添加空值而不是將空值寫入該節點本身來進行模擬! –