【发布时间】:2017-06-05 04:40:36
【问题描述】:
我想问一下如何在 Android Firebase 中检索具有受限子项的数据。这是我的数据结构:
"chatrooms":
"chatroom_id_1" :
"message":
"message_id_1":1
"message_id_2":1
"message_id_3":1
"message_id_4":1
"message_id_5":1
"message_id_6":1
"message_id_7":1
"message_id_8":1
"message_id_9":1
"message_id_10":1
"message_id_11":1
"chatroom_id_2" :
"message":
"message_id_12":1
"message_id_13":1
"message_id_14":1
"message_id_15":1
"message_id_16":1
"message_id_17":1
"message_id_18":1
"message_id_19":1
"message_id_20":1
"message_id_21":1
"message_id_22":1
从上面的结构中如何进行查询以检索数据仅限于 5 条消息的快照?
我想要的dataSnapshot是这样的:
DataSnapshot {
key = chatroom_id_1,
value = {
messages={
message_id_1=1,
message_id_2=1,
message_id_3=1,
message_id_4=1,
message_id_5=1
}
}
}
DataSnapshot {
key = chatroom_id_2,
value = {
messages={
message_id_12=1,
message_id_13=1,
message_id_14=1,
message_id_15=1,
message_id_16=1
}
}
}
可以这样做吗?因为我发现的大多数教程只能限制检索到的孩子而不是内在孩子。谢谢
编辑:我的 message_id 是随机生成的,因此要获得 message_id 我必须使用带有 iterator 的 DataSnapshot 。这是我的检索数据代码
public void retrieveChatRoom(final Callback callback){
DatabaseReference ref = reference.child("chatrooms");
ref.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
callback.onDataChanged();
Iterator i = dataSnapshot.getChildren().iterator();
while (i.hasNext()) {
DataSnapshot dataSnapshot1 = (DataSnapshot) i.next();
callback.dataReceived(dataSnapshot1);
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
问题是 DataSnapshot 会返回我聊天室中的所有 chat_message,我可以将其限制为仅返回 5 条消息吗?
【问题讨论】:
标签: android firebase firebase-realtime-database