Firebase Kotlin参考多个孩子

时间:2019-05-08 15:35:22

标签: android firebase firebase-realtime-database kotlin android-recyclerview

我正在使用Kotlin将Firebase Realtime Database用于我的Android应用程序。

我具有以下格式的JSON。

    {
  "main1": {
    "branch1": [
      {
        "a": "Test1",
        "b": "Test2"
      },
      {
        "a": "Test3",
        "b": "Test4"
      }
    ],
    "branch2": [
      {
        "a": "Test5",
        "b": "Test6"
      },
      {
        "a": "Test7",
        "b": "Test8"
      }
    ]
  }
}

我想获得一个以上孩子的结果,并将其显示在“回收者”视图中。

当前,我只能使用以下代码填充一个孩子。

FirebaseDatabase.getInstance().getReference().child("main1").child("branch1")

但是我找不到查询来获取branch1和branch2的组合结果。我也可以将main2与branch3和branch4一起使用。

如何将它们作为单个输出输出,以在RecyclerView上显示多个子项。

1 个答案:

答案 0 :(得分:0)

没有一种方法可以执行查询并一次性获得所有这些对象。但是,有一种解决方法,您可以通过减少子代数来对数据库结构进行一些更改。因此,请检查以下架构:

{
  "main1": {
      {
        "a": "Test1",
        "b": "Test2",
        "branch1": true
      },
      {
        "a": "Test3",
        "b": "Test4"
        "branch1": true
      },
      {
        "a": "Test5",
        "b": "Test6"
        "branch2": true
      },
      {
        "a": "Test7",
        "b": "Test8"
        "branch2": true
      }
  }
}

如果要获取所有对象,只需使用以下参考:

FirebaseDatabase.getInstance().getReference().child("main1");

如果要获取类型为branch1的所有对象,请使用以下查询:

FirebaseDatabase.getInstance().getReference().child("main1")
    .orderByChild("branch1")
    .equalTo(true);