Firebase数据库规则以防止重复

时间:2018-10-25 14:45:18

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

我有一个看起来像这样的数据库:

app-name
 ᠁
[-]⋯users
     ᠁
     ᠁⋯⋯ -AOSa09sd8QEK
     ᠁       ᠁ 
     ᠁       ᠁⋯⋯ date: 12/06/05
     ᠁       ᠁ 
     ᠁       ᠁⋯⋯ email: foo@gmail.com
     ᠁
     ᠁⋯⋯ -AOSa3xsd489E
            ᠁ 
            ᠁⋯⋯ date: 12/36/05
            ᠁ 
            ᠁⋯⋯ email: bar@gmail.com

我要避免重复发送电子邮件,因此,如果我尝试推送项目{date: 11/06/10, email: bar@gmail.com,则必须拒绝该项目,并且数据库中也不应发生任何事情。

我的规则目前是这样的:

{
  "rules": {      
    "users": {
      ".read": true,
      ".write": true,
    }
  }
}

如何在Firebase数据库上实施一项规则,以防止在此电子邮件约束下出现重复?

1 个答案:

答案 0 :(得分:0)

您不能编写像这样检查唯一性的规则。最好的办法是使用Cloud Function在写入时触发,然后可以执行查询以查看现在是否有1条以上的记录共享添加的数据。这意味着有人刚刚添加了一个副本,然后可以在同一函数中将其删除。