防止更新或删除现有节点的firebase安全规则

防止更新或删除现有节点的firebase安全规则,firebase,firebase-realtime-database,firebase-security,Firebase,Firebase Realtime Database,Firebase Security,例如,如果我创建了一个节点(书),其中有一个子节点(作者)的值为(“作者名称”)。我想要的是,将来没有人可以更新或删除这个子节点。我知道使用firebase安全规则是可能的,但我无法找到最佳方法 您可以编写一个数据库规则,只允许创建新数据,而不允许在写入后编辑任何内容 如果$key位置没有数据,则可以创建一本新的书籍。它还确保newData存在,并且author是string变量 { "rules": { "book": { "$key": { "auth

例如,如果我创建了一个节点(书),其中有一个子节点(作者)的值为(“作者名称”)。我想要的是,将来没有人可以更新或删除这个子节点。我知道使用firebase安全规则是可能的,但我无法找到最佳方法

您可以编写一个数据库规则,只允许创建新数据,而不允许在写入后编辑任何内容

如果
$key
位置没有数据,则可以创建一本新的
书籍。它还确保
newData
存在,并且
author
string
变量

{
  "rules": {
    "book": {
      "$key": {
        "author": {
          ".validate": "newData.isString()"
        },
        ".write": "data.val() == null && newData.val() != null"
      }
    }
  }
}

这可以确保数据不会被删除,但不会强制执行数据不能更改。为此,添加
newData.val()===data.val()
。不应
data.val()===null
强制执行
创建
只写,它不允许
更新
删除
?嗯。。。这是一个很好的观点。它可能是这样的,所以我不确定为什么要使用另一个条件。好。。。这两种方法都可能有效。我使用Firebase Bolt,它将create呈现为
”。write:“data.val()==null”
,所以它可能更简单?这三种解决方案都能奏效!啊。。。那是“写一次”。美好的