【问题标题】:How to apply multiple query in android firebase? [duplicate]如何在android firebase中应用多个查询? [复制]
【发布时间】:2018-04-04 00:44:48
【问题描述】:

这是我的 Firebase 数据库结构

我想得到类似的数据

类别 = “猫”和级别 = “1”

这是我的代码

 Query query = firebaseReference.orderByChild("category").equalTo("cat1").limitToFirst(20);

        query.addListenerForSingleValueEvent(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {

                UTILS.Log.e(TAG, "List Of User Count " + dataSnapshot.getChildrenCount());

                for (DataSnapshot dataSnapshot1 : dataSnapshot.getChildren()) {

                    //FCreateUSer modelRegister = dataSnapshot1.getValue(FCreateUSer.class);
                    UTILS.Log.e(TAG, "User Email :" + dataSnapshot1.child("question").getValue());

                }
            }

            @Override
            public void onCancelled(DatabaseError databaseError) {

            }

        });

这很好,但是如何在 firbase 中使用两个条件我尝试了两个 orderByChild 但它给出了错误 java.lang.IllegalArgumentException: You can't combine multiple orderBy calls!

【问题讨论】:

标签: android firebase firebase-realtime-database


【解决方案1】:

看看这个视频(它是用 JavaScript 编写的,但它确实解决了你的问题):https://youtu.be/sKFLI5FOOHs?t=612

基本上,您需要为查询构建数据。在 OP 示例中,问题将具有 category_level: "cat_1" 之类的字段。然后您可以执行查询equalTo("cat_1")。如果您需要在其他查询中使用 categorylevel 字段(但在这种情况下需要处理重复),您可以省略这两个字段。

如果您知道您的项目数量很少,最简单的解决方案是拉出所有 category=cat 并过滤 level=1 项目。

【讨论】:

  • 谢谢,我会检查视频
  • 不,我无法过滤超过 2000 次重新编码的类别中的 bcz,因此无法过滤级别 = 1
  • 虽然视频可能会解决 OP 的问题,但您的回答也应该包括最低限度的答案。
  • 好的,我加了。
  • 从这个视频中我已经完成了你所说的工作,感谢你的帮助,我将投票赞成并接受你的回答
猜你喜欢
  • 2017-04-23
  • 1970-01-01
  • 2018-01-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-29
相关资源
最近更新 更多