<分区>
我正在使用 firebase 进行实时聊天。但是现在我在数据排序方面遇到了问题,就像在网络 whatsapp 中一样,我们以我想要显示的方式在顶部显示了最新时间的用户。
这就是我在 firebase 中保存数据的方式:
var rootRef = firebase.database().ref();
var storesRef = rootRef.child('messages');
var adminref = storesRef.child(username);
var newStoreRef = adminref.push();
newStoreRef.set({
"file": "",
"id": senderid,
"message": chatdata,
"time": chattime,
"timestamp" : nowTimestamp,
"name": senderName
});
然后我像这样检索数据
$(document).ready(function(){
var rootRef = firebase.database().ref().child("users");
rootRef.on('value', function(snapshot)
{
snapshot.forEach(function(childSnapshot)
{
console.log(childSnapshot);
var name = childSnapshot.key;
var childData = childSnapshot.val();
//console.log(childData);
if($('#'+name).length) {
return;
} else {
var rootRef = firebase.database().ref().child("messages").child(name);
var html = '';
var username = name ;
var userid = childData.id;
rootRef.limitToLast(1).orderByChild('timestamp').on('child_added', function(snapshot)
{
var name = snapshot.key;
var childDatamsg = snapshot.val();
$('#'+username).remove();
//document.getElementById(username).remove();
$("#users").prepend('<div class="row sideBar-body userchat" data-id="'+userid+'" onclick="showDiv()" id="'+username+'"><div class="col-sm-3 col-xs-3 sideBar-avatar"><div class="avatar-icon"><img src="http://chat.synetal.com/assets/user2.jpg"></div></div><div class="col-sm-9 col-xs-9 sideBar-main"><div class="row"><div class="col-sm-8 col-xs-8 sideBar-name-align" id="chat"><span class="name-meta">'+ username +'</span></div><div class="col-sm-4 col-xs-4 pull-right sideBar-time-align"><span class="time-meta pull-right">'+childDatamsg.time+'</span></div><div class="col-sm-10 col-xs-10 sideBar-message-align"><span class="sideBar-last-msg">'+childDatamsg.message+'</span></div><div class="col-sm-2 col-xs-2 pull-right sideBar-time-align"><span class="sideBar-msg-counter pull-right" style="">1</span></div></div></div></div>');
// $(this).attr('data-id').remove();
});
}
});
});
});
我想根据时间戳对数据进行排序,但结果我收到了第一条消息,但我想要最后一条消息,它是根据时间戳排序的