gpt4 book ai didi

firebase - 在 firebase 中查询嵌套数据

转载 作者:行者123 更新时间:2023-12-02 21:41:38 26 4
gpt4 key购买 nike

现在新的查询功能已经推出,我要问这个问题。这与其他问题类似,答案基于旧 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com