如何在android firebase中应用多个查询?

时间:2016-12-21 12:17:36

标签: android firebase firebase-realtime-database

这是我的Firebase数据库结构 guide

我想获得像

这样的数据

类别 =“cat”和级别 =“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) {

            }

        });

它是wrok但如何在firbase中使用两个条件我尝试两个orderByChild但是它给出错误 java.lang.IllegalArgumentException:你不能组合多个orderBy调用!

1 个答案:

答案 0 :(得分:1)

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

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

如果您知道自己的项目数量很少,那么最简单的解决方案就是提取所有category=cat和过滤level=1项目。