首页 > 解决方案 > Firebase 数据库规则以防止重复

问题描述

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

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 数据库上实施规则,以防止在此电子邮件约束下重复?

标签: firebasefirebase-realtime-databasefirebase-security

解决方案


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


推荐阅读