我有两个集合,其中包含来自两个用户的消息。这些到DOM的输出很好,它首先显示来自用户1的消息,然后显示来自用户2的消息,或者以其他方式显示。这不利于聊天体验。我需要先浏览文档并按时间顺序排序。
function fetchMessage(){
dbRef= db.collection("user").doc("eF1RFw3FVAO3LFJ8ORrf7oJPyR13").collection('user1').orderBy("dbTime", "asc");
dbRef.get().then((snapshot) =>{
snapshot.docs.forEach(doc =>{
rendermeMessage(doc); //calls these method that outputs and
//renders to the DOM
});
});
}
另一人实时从第二个用户集合中获取消息
dbRef= db.collection("user").doc("eF1RFw3FVAO3LFJ8ORrf7oJPyR13").collection('user2').orderBy("sentAt", "asc");
dbRef.onSnapshot(function(snapshot) {
snapshot.docChanges().forEach(function(change) {
if(change.type==="added"){
renderAdminMessages(change.doc);
}
});
});
我只需要它表现得像普通的聊天应用程序一样,即最早的消息,然后是第二个用户的第二条消息(如果它是排在第二位的消息)。 我创建了一个数组来首先存储两个用户的所有文档,但是我无法循环访问该数组。 每个集合中的每个文档都有一个时间戳和一条消息。