【发布时间】:2018-04-01 20:20:06
【问题描述】:
我有一个用于聊天应用程序的数据库结构,所以我在数据库中有一个消息节点,如下所示
messages 是包含两个聊天用户的 UID 的键的父级,该键包含聊天正文的值,我的应用程序在按我想要的方式推送数据时运行良好。
但是当试图读取数据时,DataSnapShot 对象总是有节点的最后一个叶子表示键的子节点。我尝试了不同的方法来获取它自己迭代的密钥并获得它的值列表,但没有运气。
我尝试过的方法
public static final String MESSAGES_NODE_DB = "messages";
mMessageDbRef = FirebaseDatabase.getInstance().getReference()
.child(MESSAGES_NODE_DB).child(keyUserA + "-" + KeyUserB);
mMessageDbRef.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
Timber.d("parent key " + dataSnapshot.getKey());
for (DataSnapshot singleSnap : dataSnapshot.getChildren()) {
Message message = singleSnap.getValue(Message.class);
messageList.add(message);
instantiateRecyclerView();
}
}
这种方法总是会导致错误 Can't convert object of type
java.lang.String
父键打印 L91eMRVq_nx6WHUzZFo
另一个
mMessageDbRef = FirebaseDatabase.getInstance().getReference().child("messages");
for (DataSnapshot singleSnap : dataSnapshot.getChildren()) {
Timber.d("keys" + singleSnap.getKey());
}
}
输出是 L91eMRVq_nx6WHUzZFo
我想要达到的目标
将消息节点内的键列表检索为
vXgRtbjqhUYPOLyjhmGKRzITUC83-24L0kQx75fhoz06YpXnWRheETct2
【问题讨论】:
标签: java android firebase firebase-realtime-database