我一直在试验以下安全规则,一开始工作正常,但在我尝试删除数据时卡住了。我从方案1开始,它允许我创建一个新条目,但不允许我删除条目。这是有道理的,因为newData()引用了写操作之后的条目,因此“blocker”的值不再存在。 场景1:
".write": "auth != null && !root.child('suspensions').child(newData.child('blocker').val()).hasChild(auth.uid)"
然后我尝试了第二种情况,其中data()和newData()都是选项。在这种情况下,即使是新数据的初始写入也被阻止。 场景2
".write": "auth != null && (!root.child('suspensions').child(data.child('blocker').val()).hasChild(auth.uid) || !root.child('suspensions').child(newData.child('blocker').val()).hasChild(auth.uid))"
我还尝试将各个子句放在他们自己的括号((!...) || (!...))
中,但这没有用。因此出现了几个问题。为什么使用data()的extra子句在我使用OR时阻止写入新数据?我是否使用声音方法进行删除,同时使用data()和newData()?欢迎任何建议。