有谁知道我可以在firebase中的where子句中执行常见的“ OR”操作?
我需要在查询中执行此操作,因为我正在将查询发送到适配器。因此,我的意思是,我无法添加侦听器并检查一个值,然后再检查另一个值。我需要在查询中指向该结果的完整查询。
我所拥有的是这样的:
chat1:
user1Id: "1"
user2Id: "2"
bothUsers: "1_2"
chat2:
user1Id: "2"
user2Id: "4"
bothUsers: "2_4"
Run Code Online (Sandbox Code Playgroud)
我需要获取ID为“ 2”的用户的所有聊天记录。我正在尝试像这样的查询:
userLogged = 2;
Query queryRef = firebase.orderByChild("user2Id").equalTo(userLogged);
Run Code Online (Sandbox Code Playgroud)
但是,只有在用户2处于user2Id位置时,它才会获得聊天。但是在上面的示例中,当用户2位于user1Id(chat2)中时,它将不会获得。我需要得到它。我怎样才能做到这一点?
我正在尝试获取我的消息节点的最后一个ID,但它没有得到最后一个.例如,我的最后一个id是12,但它总是返回项目10的id.我的代码是这样的:
final Query query = firebase.orderByChild("messageId").limitToLast(1);
query.addListenerForSingleValueEvent(new ValueEventListener() {
public void onDataChange(DataSnapshot dataSnapshot) {
Log.i("MessagesFrag","snapshot: "+dataSnapshot.getValue()+"");
}
public void onCancelled(FirebaseError firebaseError) {}
});
Run Code Online (Sandbox Code Playgroud)
它返回如下内容:
{10={chatId=6, time=Wed Apr 13 22:20:43 EDT 2016, message=hi, user=123, messageId=10}}
Run Code Online (Sandbox Code Playgroud)
它应该返回:
{12={chatId=6, time=Wed Apr 13 22:29:02 EDT 2016, message=I am fine, user=1234, messageId=12}}
Run Code Online (Sandbox Code Playgroud)
我的数据是这样的:
messages
9:
chatId: "6"
message: "hi"
messageId: "9"
time: "Wed Apr 13 22:29:02 EDT 2016"
user: "123"
10:
chatId: "6"
message: "hello"
messageId: "10"
time: "Wed Apr 13 22:29:02 EDT 2016"
user: …Run Code Online (Sandbox Code Playgroud)