我使用recyclerview来检索聊天消息,我想知道是否有方法来检索两个不同的值,我的意思是:
FirebaseRecyclerOptions<enchat> options =
new FirebaseRecyclerOptions.Builder<enchat>()
.setQuery(
mChatDatabase.orderByChild("state").equalTo("sent")
&& mChatDatabase.orderByChild("state").equalTo("received"),
enchat.class)
.build();
没有办法将两个值传递到一个条件中。Firebase实时数据库不支持这种类型的OR条件。
另请参阅:
- 基于Firebase中多个where子句的查询
- Firebase中的iOS-OR查询
常见的解决方法有:
-
执行两个查询并将结果合并到应用程序代码中。但在这种情况下,您将无法使用FirebaseUI中的适配器。
-
执行范围查询,但仅当
received
和sent
之间没有state
值时才有效。如果是这种情况,那么查询可能是:mChatDatabase.orderByChild("state").startAt("received").endAt("sent")
-
添加一个当
state
为received
或sent
时为true的附加属性,并对其进行过滤:mChatDatabase.orderByChild("stateIsReceivedOrSent").equalTo(true)