安卓Firebase应用多个查询

3
我有以下数据库。
-KYTfJZQbg0RVzHeecIS
     createdAt: 1481204648530
     message: "rgd"
     read: false
     reciever: "583d15cf45f3330807364c55"
     sender: "58490e9945f33364ac6cd7b1"
     updateAt: 1481204648654

现在我希望过滤“READ”==FALSE AND “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个回答

6

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

现在我想要过滤结果,使"READ"==FALSE并且"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());

请在Item.class中添加方法public String getReadSender(){return read+"_"+sender;}。但是这个方法不应该带有@Exclude注解。 - NickUnuchek

4

我们不能像这样使用多个orderby:Query query = reference.orderByChild("read").equalTo(false) .orderByChild("sender").equalTo(datum.getEmployer().getEmployerId()); 否则会抛出异常:java.lang.IllegalArgumentException: You can't combine multiple orderBy calls! - Akshay Sood
是的,那正是我上面提到的视频部分所讨论的内容。 - John O'Reilly
@JohnO'Reilly 如何实现结果? - Aditya Vyas-Lakhan
无法工作,因为在这个视频中展示了同样的东西:Query query = reference.orderByChild("read").equalTo(false) .orderByChild("sender").equalTo(datum.getEmployer().getEmployerId()); - Appnweb31

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接