【问题标题】:Firebase DB: Check if data is already storedFirebase DB:检查数据是否已存储
【发布时间】:2017-07-20 11:42:27
【问题描述】:

有可能检查用户添加的数据是否已经在数据库中,还是只能通过 Firebase 云功能“手动”进行?

让我举一个非常简单的例子来说明我的意思:

我想存储用户,但是我需要安全规则来查找电子邮件地址的重复项,并且只有在没有匹配的电子邮件地址时才能存储接收到的数据。

数据库结构:

root
 └── users
     └── uID
         ├── email
         ├── name
         └── gender

发送 JSON:

{
   email: test@test.com,
   name: John Example,
   gender: male
}

注意:我没有使用这些数据进行登录。我只是存储从 Facebook Graph API 返回的数据。

谢谢!

【问题讨论】:

  • 适用于哪个平台,Android、iOs 或 Web?
  • @AlexMamo 安全规则是在网络上设置的。所以它不应该是特定于平台的。
  • 对你有什么帮助吗,用代码用 Android 来做?
  • @AlexMamo 我正在使用 JavaScript SDK,因此我无法在客户端执行此操作,因为他们可以稍微更改代码并查看其他用户。
  • 将电子邮件存储在密钥中的问题不是由@引起的,而是由Firebase不允许的.引起的。大多数开发人员只是将. 转换为,,这在电子邮件地址中是不允许的。也可以在这里查看我的答案:stackoverflow.com/questions/39149216/…

标签: firebase firebase-realtime-database nosql


【解决方案1】:
"rules" : {
    "test" : {
       ".write" : "true && newData.val() !== data.child('email').val()",
       ".read" : true
 }
}

希望这会有所帮助..!

【讨论】:

  • 感谢您的输入,但是我在问题的底部写道,我没有使用登录数据,因此我无法使用 auth 表达式。
  • 如果不使用 auth ,那么你删除 auth 并尝试,它不会影响@TomasB
  • 好吧,我不得不将其更改为 newData.child('email').val() 以使其可发布,但它仍然不起作用(至少在模拟器中)路径:/users/ test23 { "email": "123" } 我有一个用户的电子邮件是“123”,它仍然可以让你写。
  • 能发截图吗
猜你喜欢
  • 2022-08-21
  • 2019-04-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多