Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Firebase查询-嵌套数据_Firebase - Fatal编程技术网

Firebase查询-嵌套数据

Firebase查询-嵌套数据,firebase,Firebase,我正在尝试查询firebase中的一些分层数据。我很难弄清楚如何查询以下数据结构: { "orgs": { "-KBFXBBEyvgtfqMvU4pi": { "name": "ACME 123", "owner": "-K9IPqIUIuEFzLS0f_Pe", "users": { "-KBF_GhwTmXfR6Jce30t": { "email": "userA@company.com",

我正在尝试查询firebase中的一些分层数据。我很难弄清楚如何查询以下数据结构:

{
  "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
本质上是一种邀请/共享机制。