Android firebase应用多个查询

时间:2016-12-08 14:05:30

标签: android firebase firebase-realtime-database

我有以下数据库

-KYTfJZQbg0RVzHeecIS
     createdAt: 1481204648530
     message: "rgd"
     read: false
     reciever: "583d15cf45f3330807364c55"
     sender: "58490e9945f33364ac6cd7b1"
     updateAt: 1481204648654

现在我想过滤“READ”的结果== FALSE和“SENDER”== 58490e9945f33364ac6cd7b1

我怎样才能做到这一点?

任何帮助将不胜感激 感谢

编辑: -

我在android中使用它作为

Query query = reference.orderByChild("read").equalTo(false)
                .orderByChild("sender").equalTo(datum.getEmployer().getEmployerId());

它给了java.lang.IllegalArgumentException: You can't combine multiple orderBy calls!

2 个答案:

答案 0 :(得分:4)

不幸的是,使用Firebase并不是直截了当的.....在Firebase乐队的视频中做了非常相似的事情(约9分钟)https://www.youtube.com/watch?v=sKFLI5FOOHs&list=PLl-K7zZEsYLlP-k-RKFa7RyNPa9_wCH2s&index=4

答案 1 :(得分:3)

firebase不支持多个orderbychild()查询。

  

现在我想过滤“READ”== FALSE AND的结果   “SENDER” == 58490e9945f33364ac6cd7b1

在您的数据中创建一个新密钥,即READ_SENDER并合并两者的数据并使用这样的查询 -

-KYTfJZQbg0RVzHeecIS
     createdAt: 1481204648530
     message: "rgd"
     read: false
     reciever: "583d15cf45f3330807364c55"
     sender: "58490e9945f33364ac6cd7b1"
     read_sender : "false_58490e9945f33364ac6cd7b1"
     updateAt: 1481204648654


Query query = reference.orderByChild("read_sender").equalTo("false_"+datum.getEmployer().getEmployerId());