Firebase查询-嵌套数据
我正在尝试查询firebase中的一些分层数据。我很难弄清楚如何查询以下数据结构:Firebase查询-嵌套数据,firebase,Firebase,我正在尝试查询firebase中的一些分层数据。我很难弄清楚如何查询以下数据结构: { "orgs": { "-KBFXBBEyvgtfqMvU4pi": { "name": "ACME 123", "owner": "-K9IPqIUIuEFzLS0f_Pe", "users": { "-KBF_GhwTmXfR6Jce30t": { "email": "userA@company.com",
{
"orgs": {
"-KBFXBBEyvgtfqMvU4pi": {
"name": "ACME 123",
"owner": "-K9IPqIUIuEFzLS0f_Pe",
"users": {
"-KBF_GhwTmXfR6Jce30t": {
"email": "userA@company.com",
"permission": "editor",
"userKey": "K99LV9cTjh1ovW1D5j2"
},
"-KBF_M533zzbUilGvAAW": {
"email": "userB@company.com",
"permission": "editor"
}
}
},
"-KBFaKlJ8tfqjBQjAZgq": {
"name": "ACME Alt LLC",
"owner": "-K9IPqIUIuEFzLS0f_ZZ",
"users": {
"-KBFbD4trt9nyeHPUQbn": {
"email": "userX@co.com",
"permission": "editor"
}
}
}
}
}
具体来说,我想知道电子邮件地址是否“userB@company.com“存在。但这对我来说有点困惑,因为我需要搜索两个级别(组织和用户)。在阅读了更多文档后,我似乎真的不应该这样嵌套数据。老实说,在使用层次结构的JSON模式时,这样做似乎有点相反。无论如何,这就是我现在想要做的:
{
"orgs": {
"-KBFXBBEyvgtfqMvU4pi": {
"name": "ACME 123",
"owner": "-K9IPqIUIuEFzLS0f_Pe"
}
},
"-KBFaKlJ8tfqjBQjAZgq": {
"name": "ACME Alt LLC",
"owner": "-K9IPqIUIuEFzLS0f_ZZ"
}
}
},
"orgMembership": {
"-KBFXBBEyvgtfq7h381h": {
"org": "-KBFXBBEyvgtfqMvU4pi",
"email": "userA@company.com",
"permission": "editor"
}
}
然后我可以使用以下查询:
orgMRef.orderByChild("email").equalTo("userA@company.com").once("child_added", function(snapshot) {
console.log("found: " + snapshot.key());
});
是的。或者,添加另一个节点
memberOrgs
,其中保留与orgMemberships
相反的内容:用户所属的组织。有了它,您可以通过查询来查找信息:ref.child('memberOrgs').child(auth.uid)。一次(“value”
唯一比井索引查询快的是根本不进行查询,而是直接访问数据。谢谢。我正计划做类似的事情,我打算向我的用户
数据中添加一个名为org
的属性。好消息是,我的业务要求是,用户只能elong到一个组织。当用户注册时,我尝试在orgMembership
中找到他们,然后分配他们的org
,如果他们匹配的话。我的下一个挑战是为这些数据制定安全规则。orgMembership
本质上是一种邀请/共享机制。