从firebase实时数据库检索子数据

从firebase实时数据库检索子数据,firebase,firebase-realtime-database,Firebase,Firebase Realtime Database,我已经将我的firebase数据库重组为一个平面模型,其中对象从一个对象引用到另一个对象。像下面的例子一样,我根据客户对象的id引用相关用户 现在由于某种原因,我希望在列出“customer/1510925e-0541-474f-93c1-10890934fda9”路径时返回用户对象的数据 列出客户记录时,访问用户数据的逻辑是什么?我错过了什么 "customer" : { "1510925e-0541-474f-93c1-10890934fda9" : { "users

我已经将我的firebase数据库重组为一个平面模型,其中对象从一个对象引用到另一个对象。像下面的例子一样,我根据客户对象的id引用相关用户

现在由于某种原因,我希望在列出“customer/1510925e-0541-474f-93c1-10890934fda9”路径时返回用户对象的数据

列出客户记录时,访问用户数据的逻辑是什么?我错过了什么

  "customer" : {
    "1510925e-0541-474f-93c1-10890934fda9" : {
      "users" : {
        "LlMNVWXvzLhmP24AKVciM2PvPVy2" : true,
        "Q4sM188BgwRGYhJUiLDqgAzGGX72" : true
      },
      "name" : "NiceCustomer"
    },
    "634f6b10-1def-496d-af44-834ae3c69c27" : {..customer2.},
    "a7ca5d01-757c-4534-a9e1-154c53d160a7" : {..customer 2 etc.}
  }

我假设您也有用户数据的路径,例如“/users/”。因此,用户记录的数据将通过查看“users/llmnvwxvzlhmp24akvcim2pvvy2”返回

通过指示哪些用户与某个客户关联来索引记录的目的只是为了以后更容易获取数据,尤其是在数据库扩展时

假设您的用户数据如下所示:

"users":{
  "LlMNVWXvzLhmP24AKVciM2PvPVy2":{
    "customer" : "1510925e-0541-474f-93c1-10890934fda9"
  }
  "Q4sM188BgwRGYhJUiLDqgAzGGX72":{
    "customer" : "634f6b10-1def-496d-af44-834ae3c69c27"
  }
  ...for many, many records...
}
…并且您需要找到属于特定客户记录的用户。如果您的用户列表很大,则需要进行大量处理才能找到所有相关记录。您必须检查每个用户

另一方面,如果您已经按照您在问题中指出的那样做了一些索引,那么很容易找到哪些用户使用了客户记录。只需调出客户记录,获取用户ID,然后从/users路径获取他们的数据


请参阅Firebase文档以了解详细说明:

是的,我有一个如您所示的用户路径。我开始明白了。假设我想从一个特定客户那里获取所有用户,我必须获取客户记录('customer/')。然后我有客户记录,但如何获取该特定客户的用户列表。是否通过使用“customer/”用户数组中的用户列表获取“users/”路径上的记录?那么这将是两个电话,对吗?在第一次提取中不返回用户记录是正常的吗?用户记录不根据“客户”路径提取返回是正常的。是的,一种可能的查询方法是首先获取客户记录,然后使用用户列表查询“/user”路径以获取更多数据。关于如何使用Firebase数据库查找记录,我喜欢的一个描述如下: