I am using firebase for real time chat. But now I am facing problem in data sorting, like in web whatsapp we get user with latest time displayed on top same way I want to display.
This is how i save data in 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
});
and then i retrive data like this
$(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();
});
}
});
});
});
I want to sort data from timestamp but in result i am getting the first message but i want last message which is sorted acc to timestamp