【问题标题】:How to Filter Data In Firebase realtime Database如何过滤 Firebase 实时数据库中的数据
【发布时间】:2022-06-10 19:57:21
【问题描述】:

我想把news这个孩子的数据放到一个列表中。只能在 all 或 Management 时获取部门密钥吗?

这是我的代码:

query = MainNewsDb.orderByChild("department").equalTo("Management").limitToLast((int)limit);
query.addValueEventListener(valueEventListener1);

query1 = NewsListDb1.orderByChild("department").equalTo("all").limitToLast((int)limit);
query1.addValueEventListener(valueEventListener1);

这是我的 RTDB:

【问题讨论】:

  • “我只能在 all 或 Management 时获取部门密钥吗?”是什么意思?
  • @AlexMamo 我想在发布到多个部门的新闻中显示为所有部门发布的新闻以及正在考虑的部门的新闻。(问题中的我的数据库图像)
  • 那么你想得到组合查询的结果吗?这是你需要的吗?
  • @AlexMamo 是的先生

标签: java android firebase google-cloud-platform firebase-realtime-database


【解决方案1】:

要获得两个单独的 Firebase 实时数据库查询的组合结果,我建议您使用 Tasks.whenAllSuccess() 方法。您可以使用以下代码行来实现这一点:

query = MainNewsDb.orderByChild("department").equalTo("Management").limitToLast((int)limit);
query1 = NewsListDb1.orderByChild("department").equalTo("all").limitToLast((int)limit);

Task firstTask = query.get();
Task secondTask = query1.get();

Task combinedTask = Tasks.whenAllSuccess(firstTask, secondTask).addOnSuccessListener(new OnSuccessListener<List<Object>>() {
    @Override
    public void onSuccess(List<Object> list) {
         //Do what you need to do with your list
    }
});

如您所见,当覆盖“onSuccess()”方法时,结果是一个对象列表。拥有它后,只需将列表中的每个对象映射到所需类型的对象即可。

【讨论】:

    猜你喜欢
    • 2020-07-19
    • 2021-01-17
    • 1970-01-01
    • 1970-01-01
    • 2018-09-17
    • 1970-01-01
    • 2018-06-10
    • 2020-08-29
    • 1970-01-01
    相关资源
    最近更新 更多