【发布时间】:2021-12-12 18:31:09
【问题描述】:
我正在制作一个聊天应用程序。人 A 向 B 发送一条消息,在 A 的设备上查看聊天室时可以清楚地看到该消息。但是当我去B的设备看聊天窗口时,却看不到A发来的消息。我知道是什么问题,但不知道如何解决。请问我需要帮助。
我的数据库结构如下:
"chatrooms" : {
"-Mn0ZDpdWsOb8XFFTYmi" : {
"comments" : {
"-Mn0ZG0UoMY81i9sf6nN" : {
"message" : "hi",
"timestamp" : 1635335082263,
"uid" : "QTC8Msw1n2aUF8mDbTCUNk5k7sH3"
}
},
"users" : {
"itemName" : "goods",
"sellerUid" : "vzTQG0Fb3DgsVKGgGj0R23uL6Hx2",
"uid" : "QTC8Msw1n2aUF8mDbTCUNk5k7sH3"
}
}
这是一个有问题的代码:
FirebaseDatabase.getInstance().getReference().child("chatrooms")
.orderByChild("users/uid").equalTo(uid).addListenerForSingleValueEvent(new ValueEventListener(){
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
chatModels.clear();
for (DataSnapshot item : snapshot.getChildren()){
chatModels.add(item.getValue(ChatModel1.class));
}
notifyDataSetChanged();
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});
============
FirebaseDatabase.getInstance().getReference().child("chatrooms")
.orderByChild("users/sellerUid").equalTo(uid).addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
chatModels.clear();
for (DataSnapshot item : snapshot.getChildren()){
chatModels.add(item.getValue(ChatModel1.class));
}
notifyDataSetChanged();
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});
这在B的设备上显示了A的消息,远远没有解决问题。
所以,我想要的是:
FirebaseDatabase.getInstance().getReference().child("chatrooms") .orderByChild("users/uid").equalTo(uid).addListenerForSingleValueEvent
在这部分,我们不仅要搜索 users/uid,还要搜索 users/cellerUid,并执行 euqalTo(udi) 条件。
【问题讨论】:
标签: java android firebase firebase-realtime-database