Firebase删除或创建规则

时间:2017-10-23 10:42:17

标签: firebase firebase-realtime-database firebase-security

现有数据与新数据部分的以下link中的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()"

有人可以解释一下为什么写操作允许删除操作,因为这在我看来是错误的吗?

在文件的同一部分中,它指出: newData表示正在写入的新数据和现有数据的合并结果。

问题在于,如果存在删除操作,那么数据将存在,并且 newData 也将存在,因为它是合并后的结果,如文档所述。因此,表达式!data.exists() || !newData.exists()应该返回false。

有人可以告诉我,如果我遗失了什么吗?

1 个答案:

答案 0 :(得分:1)

它说:

  • 如果没有旧数据(写入空位置)。
  • 或者,如果新数据为空(删除(清空)该位置)。

能够删除这样的数据很方便,特别是在进行原子更新时。这意味着“做这些多重操作,但只有当它们都成功时”。 e.g。

dbRef.update({
  history: { someNewKey: 'The transaction happened!' },
  pending: { somePendingKey: null }
});

我们在历史表中写入一个条目,并使用空写入一次性从待处理表中删除该项目。