在Android中使用多个where条件从Firebase数据库中获取数据

时间:2019-12-30 08:53:39

标签: android firebase select firebase-realtime-database

enter image description here

我正在尝试以下代码:

Query query = FirebaseDatabase.getInstance().getReference("Current Location")
         .orderByChild("email_id").equalTo("pratiksiddhapura11@gmail.com")
         .orderByChild("date").equalTo("2019/11/18");

但是这对我不起作用,并给出如下错误:-

  • 您不能将多个orderBy通话合并!

我想要用户数据,其中email_id =“ pratiksiddhapura11@gmail.com”和日期=“ 2019/11/18”

还有其他解决方案吗?

对于Android(JAVA)

1 个答案:

答案 0 :(得分:0)

Firebase不支持多个orderBy调用。您可以在服务器端应用一个过滤器,在客户端应用另一个。

检查以下实现:在这里,我在服务器端使用了email_id,在客户端使用了date来过滤数据。希望对您有帮助。

Query query = FirebaseDatabase.getInstance().getReference("Current Location").orderByChild("email_id").equalTo("pratiksiddhapura11@gmail.com");
query.addValueEventListener(new ValueEventListener() {
    @Override
    public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
        for(DataSnapshot childSnapshot: dataSnapshot.getChildren()) {
            YourModel yourModel = childSnapshot.getValue(YourModel.class);

            if(yourModel.getDate().equalsIgnoreCase("2019/11/18")) {
                // Here is your desired location
            }
        }
    }

    @Override
    public void onCancelled(@NonNull DatabaseError databaseError) {

    }
});