【问题标题】:fetch data from firebase database with multiple where condition in android [duplicate]从具有多个where条件的firebase数据库中获取数据[重复]
【发布时间】:2020-04-19 00:49:06
【问题描述】:

我正在尝试这段代码:

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)

【问题讨论】:

  • 是的,这是真的。在 firebase 查询中您不能组合多个 orderBy 调用。您可以在客户端获取数据后过滤日期
  • 在这种情况下,您可以通过添加一个结合了email_iddate 的值的属性来在服务器上进行所有过滤,例如"email_id-date": "pratiksiddhapura11@gmail.com-2019/11/18"。这样,您可以通过简单地检查单个属性来过滤这两个值。我对链接问题的回答更多地说明了如何做到这一点。

标签: android firebase select firebase-realtime-database


【解决方案1】:

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) {

    }
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-12-30
    • 2021-10-09
    • 2017-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-03
    相关资源
    最近更新 更多