我想了解如何在Android Firebase中使用有限子女檢索數據。這裏是我的數據結構:如何限制在Firebase中檢索到的孩子Android
"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我必須使用帶有迭代器的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級的消息?
從你的回答就意味着我們必須知道chatroom_id鍵和MESSAGE_ID關鍵?在我的情況下,密鑰是隨機生成的,所以我不知道聊天室和消息的關鍵。如果我們不知道chatroom_id和message_id,有沒有辦法做到這一點? – VincentTheonardo
如果你不知道聊天室ID,你怎麼知道從哪個房間檢索消息? –
我正在使用迭代器從datasnapshot中檢索我的chatroom_id。問題是datasnapshot返回裏面的所有子項。我想要做的就是限制孩子回到只有5個孩子。謝謝 – VincentTheonardo