创建了一个聊天应用程序,我们使用Firebase进行实时通信。
有时,我注意到push()方法会拖移列表数据。我们可以在下图中看到:
如果我们在上图中看到我只是想与某人交流,我在打个招呼时回复用户说的嘿,再次,我说我需要一些帮助,然后用户说,这就是我在这里的目的。我能为您提供什么帮助?在回复中,但如果我们在图片中看到用户回复,则首先出现。
它断断续续地发生,这就是为什么我不知道这个问题的原因。所以请有人帮我解决我该怎么做。
var pushMessageToFB = function(){
var chatMsgRef = db.child("chatMessages").child("gr1").child("ch_usr1_usr2");
var message = {
type: "chat",
content: data.messageText,
timestamp: Date.now(),
by: user.id
};
chatMsgRef.push(message, function(err){
if (err){
console.log('error occurred while pushing message to fb : err ' + JSON.stringify(err));
}
});};
var loadChatMessages = function(){
var chatMsgRef = db.child('chatMessages').child("gr1").child("ch_usr1_usr2");
$scope.chatMessages = chatMsgRef.orderByKey().limitToLast(50);
};
最佳答案
不要将日期用于远程数据。在每台机器上都会略有偏移。 Use ServerValue.TIMESTAMP
写入数据时,Firebase将转换为服务器的Unix纪元时间。这样可以确保客户之间订单的一致性。
您没有提供任何有关如何阅读或显示聊天消息的代码,但是由于您尝试按时间顺序显示它们,因此我假设您的查询使用。如果在编写消息时使用orderBy("timestamp")
,则可以保证按照写入数据库的顺序进行排序。
关于javascript - Firebase push()方法可随机播放列表数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42540252/