Firebase删除或创建规则
在Firebase文档中的“现有数据与新数据”一节中,说明以下规则适用于数据的创建或删除Firebase删除或创建规则,firebase,firebase-realtime-database,firebase-security,Firebase,Firebase Realtime Database,Firebase Security,在Firebase文档中的“现有数据与新数据”一节中,说明以下规则适用于数据的创建或删除 // we can write as long as old data or new data does not exist // in other words, if this is a delete or a create, but not an update ".write": "!data.exists() || !newData.exists()" 有人能解释一下为什么写操作允许删除操作,因为在
// we can write as long as old data or new data does not exist
// in other words, if this is a delete or a create, but not an update
".write": "!data.exists() || !newData.exists()"
有人能解释一下为什么写操作允许删除操作,因为在我看来这是错误的吗
在文件的同一节中,它指出:
newData表示正在写入的新数据与现有数据的合并结果
问题是,如果存在删除操作,那么数据将存在,新数据也将存在,因为它是文档状态下的合并结果。因此,表达式!data.exists()| |!newData.exists()
应返回false
有人能告诉我我是否遗漏了什么吗?上面写着:
- 如果没有旧数据(写入空位置)
- 或者如果新数据为空(删除(清空)位置)
在那里,我们将一个条目写入历史记录表,并使用空写入操作一次性从挂起表中删除该项。Arghhh。。。很抱歉现在我明白了。删除操作后,newData变量将完全为空!!!文档应说明newData变量包含操作完成后的数据。同样地,如果操作是delete操作,那么newData将是空的。
dbRef.update({
history: { someNewKey: 'The transaction happened!' },
pending: { somePendingKey: null }
});