Firebase数据库规则允许更新但阻止创建

Jer*_*rry 8 firebase firebase-realtime-database firebase-security-rules

如何使用"允许更新但不允许添加新记录"来设置数据库规则?

我尝试在下面模拟,但不起作用..

我的数据:

{
  users:{
    -randomID001:{
      email:user@email.com,
      status:active
    },
    -randomID002:{
      email:user2@email.com,
      status:inactive
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

在控制台中模拟:

{
  "rules": {
    ".read": "auth != null",
    "users":{
      ".indexOn": "email",
      ".write":"!newData.exists() && data.exists()" 
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

如果新记录不存在且现有记录存在,这行代码显示允许写入的意思?

".write":"!newData.exists() && data.exists()" 
Run Code Online (Sandbox Code Playgroud)

以下是我提交的测试数据:

{
  "randomID001":{"status":"inactive"}
}
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

Simulated update denied
Run Code Online (Sandbox Code Playgroud)

请指教.

abh*_*ana 6

您可以使用验证来检查数据库中是否已存在电子邮件,这将仅允许更新现有用户.

"users":{
    "$userId":{
      ".write":"auth!=null",
      ".validate":"newData.child('email').val()===data.child('email').val()"
    }
Run Code Online (Sandbox Code Playgroud)