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

时间:2017-11-14 12:56:58

标签: firebase firebase-realtime-database

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

现在出于某种原因,我希望在列出' 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.}
  }

1 个答案:

答案 0 :(得分:1)

我假设您还有一条用户数据路径,例如" / users /"。因此,例如,通过查看" users / LlMNVWXvzLhmP24AKVciM2PvPVy2"可以返回用户记录的数据。

通过指明哪些用户与客户相关联来完成索引的索引只是为了以后更容易获取数据,尤其是在数据库扩展时。

想象一下,您的用户数据如下所示:

"users":{
  "LlMNVWXvzLhmP24AKVciM2PvPVy2":{
    "customer" : "1510925e-0541-474f-93c1-10890934fda9"
  }
  "Q4sM188BgwRGYhJUiLDqgAzGGX72":{
    "customer" : "634f6b10-1def-496d-af44-834ae3c69c27"
  }
  ...for many, many records...
}

...您需要找到属于特定客户记录的用户。如果您的用户列表很大,则需要进行大量处理才能找到所有相关记录。你必须检查每个用户。

另一方面,如果您已经在问题中指明了一些索引,那么查找哪些用户使用客户记录很容易。只需提取客户记录,获取用户ID,然后从/ users路径获取数据。

有关详细说明,请参阅Firebase文档:https://firebase.google.com/docs/database/android/structure-data#fanout