【发布时间】:2018-08-29 05:32:12
【问题描述】:
我正在开发一个团队聊天应用程序。我将聊天数据存储在 Firebase 中。
- 聊天存储在名为
chats的节点下。 -
chats的每个直系子级都是团队的名称(如 whatsapp.. 聊天组)。 -
team节点拥有所有聊天消息。聊天消息被存储 - 具有
timestamp_chat格式的父节点
我的问题
现在我必须创建一个 firebase 查询来通过 key 获取这个团队节点。
那是
如果from: 字段包含给定的搜索值(例如,“ragesh”),则必须将父节点“team_name”作为数据快照返回(例如,“teamrova”)。
简单地说,我想要在 from 字段中具有特定用户名的团队的数据快照。
我的工作
我尝试了以下代码:
reference1 = FirebaseDatabase.getInstance().getReference().child("chats");
Query chatQuery = reference1.orderByChild("from").equalTo("ragesh");
System.out.println("Chat list :: starting");
chatQuery.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
System.out.println("Chat list :: onChildAdded");
for (DataSnapshot chat : dataSnapshot.getChildren()) {
HashMap<String, Object> hashMap = (HashMap<String, Object>) dataSnapshot.getValue();
System.out.println("Chat list :: The chat group is =>" + dataSnapshot.getKey());
System.out.println("Chat list :: The key & Value => " + chat.getKey() +" :: "+chat.getValue().toString());
}
}
@Override
public void onChildChanged(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onChildRemoved(DataSnapshot dataSnapshot) {
}
@Override
public void onChildMoved(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onCancelled(DatabaseError databaseError) {
Toast.makeText(ChatListActivity.this, "Connection Error "+databaseError.getDetails(), Toast.LENGTH_SHORT).show();
System.out.println("Chat list :: databaseError "+databaseError.toString());
}
});
遗憾的是,上面的代码没有返回任何值。甚至没有调用
System.out.println("Chat list :: onChildAdded");。而且它 也不会调用 onCancelled。(所以,没有错误)。
我对此感到震惊。请帮我。
【问题讨论】:
标签: java android firebase firebase-realtime-database