firebase - 在 firebase 中查询嵌套数据

标签 firebase

现在新的查询功能已经推出,我要问这个问题。这与其他问题类似,答案基于旧 API。

示例数据:

{ “账户”:{ “简单登录:001”:{ “电子邮件”:“test1@test.com”, “手机”:“+15555551001”, ...更多领域 }, “简单登录:002”:{ “电子邮件”:“test2@test.com”, “手机”:“+15555551001”, ...更多领域 }, “简单登录:003”:{ “电子邮件”:“test3@test.com”, “手机”:“+15555551003”, ...更多领域 } }

我希望新的查询功能允许查询嵌套数据。但是,根据我所看到的,为了找到电子邮件地址为“test2@test.com”的帐户,我确实必须执行以下两件事之一:

  1. 对帐户集合执行 .on,然后过滤结果 我。
  2. 创建一个包含如下记录的引用表,然后查询引用表以获取指向帐户表的链接。

[ { "账户": "简单登录:001", “电子邮件”:“test1@test.com”, “手机”:“+15555551001” }, { "账户": "简单登录:002", “电子邮件”:“test2@test.com”, “手机”:“+15555551001” }, { "账户": "简单登录:003", “电子邮件”:“test3@test.com”, “手机”:“+15555551003” } ]

这些真的是我唯一的选择吗?是否无法使用新的查询 API 来更深入地查询嵌套信息?

最佳答案

如果您的问题是“如何根据电子邮件获取帐户?”,那么:

var ref = new Firebase("https://your.firebaseio.com/accounts");

ref.orderByChild('email').equalTo('test2@test.com').on('value', function(snapshot) {
  console.log(snapshot.val());
});

请参阅此 jsbin 以获取工作示例:http://jsbin.com/yikecu/1/edit?js,console

更新

事实证明,OP 为每个帐户都有一个嵌套的电子邮件地址集合,并且希望根据一个电子邮件地址的存在来选择项目。

var data = {
  "accounts" : {
    "simplelogin:001" : {
      "emails" : ["test1@test.com", 'test1@bla.com'],
      "mobile" : "+15555551001"
    },
    "simplelogin:002" : {
      "emails" : ["test2@test.com", 'test2@bla.com'],
      "mobile" : "+15555551001"
    },
    "simplelogin:003" : {
      "emails" : ["test3@test.com", 'test3@bla.com'],
      "mobile" : "+15555551003"
    }
  }
};

我确实认为当前不可能进行“包含”查询。因此,自己创建索引是最好的方法。我会保持该索引非常简单:

email_to_uid:
    test1@test.com: simplelogin:0001
    test1@bla.com: simplelogin:0001
    test2@test.com: simplelogin:0002
    test3@bla.com: simplelogin:0002
    test3@test.com: simplelogin:0003
    test3@bla.com: simplelogin:0003

此索引假设每个电子邮件地址最多映射到一个帐户。如果这不适合您的用例,您需要相应地修改数据结构。

关于firebase - 在 firebase 中查询嵌套数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26910242/

相关文章:

javascript - 无法将未定义或 null 转换为 react 中的对象

ios - 如何创建使用自定义 token 登录的 FIRUser?

firebase - 更改 Firebase/Google 分析收集的默认数据

firebase - 阻止 Firebase 身份验证记住 Google 帐户?

firebase - 错误存储/未知上传图片到 Firebase 存储

firebase - 上传 csv 文件以触发 firestore 集合更新

ios - 表刷新时索引超出范围?

firebase - Firestore 数据库规则 : Permissions for Queries

Firebase云函数: Failed to read credentials from file

java - 从 Cloud Firestore Android 检索复杂对象