У меня есть эта функция, которая вызывается при загрузке страницы и отображении сообщений.Мне, однако, нужен слушатель в реальном времени для отображения сообщений, отправленных в коллекцию только от второго пользователя.то есть когда user2 отправляет сообщение, и оно публикуется в коллекции, а затем оно обновляется для user1
function fetchMessages(){
dbRef= db.collection("user").doc("eF1RFw3FVAO3LFJ8ORrf7oJPyR13").collection('messages').orderBy("dbTime", "asc");
dbRef.get().then((snapshot) =>{
snapshot.docs.forEach(doc =>{
if(doc.data().id===1){
renderUser1Messages(doc);
}
else{
renderUser2Messages(doc);
}
});
});
}
Я думал об удалении всей функции и создании прослушивателя снимков.Это хорошо работает, когда пользователь2 отправляет сообщение, затем оно отображается пользователю1 в режиме реального времени.Однако теперь, когда пользователь1 отправляет сообщение, оно отображается дважды.Слушатель угадывает срабатывает и вызывает функцию для user1 тоже с обновленными значениями из db.
dbRef.onSnapshot(function(snapshot) {
snapshot.docChanges().forEach(function(change) {
if(change.type==="added" && (change.doc.data().id==="1")){
renderUser1Messages(change.doc);
} else
if(change.type==="added" && (change.doc.data().id===2)){
renderUser2Messages(change.doc);
}
});
});
Как мне обойти это поведение