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

10 浏览
0 Comments

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

我正在尝试以下代码:

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"和date="2019/11/18"的用户数据。

还有其他解决方案吗?

适用于Android(JAVA)

0
0 Comments

问题:在Android中从Firebase数据库获取具有多个where条件的数据的原因以及解决方法。

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

解决方法:在服务器端使用"email_id"过滤数据,在客户端使用"date"过滤数据。以下是一个示例实现:

Query query = FirebaseDatabase.getInstance().getReference("Current Location").orderByChild("email_id").equalTo("pratiksiddhapura11.com");
query.addValueEventListener(new ValueEventListener() {
    public void onDataChange( DataSnapshot dataSnapshot) {
        for(DataSnapshot childSnapshot: dataSnapshot.getChildren()) {
            YourModel yourModel = childSnapshot.getValue(YourModel.class);
            if(yourModel.getDate().equalsIgnoreCase("2019/11/18")) {
                // 这里是您所需的数据
            }
        }
    }
    public void onCancelled( DatabaseError databaseError) {
    }
});

希望这对您有所帮助。

0