Возникла проблема с использованием Firetore, я пытаюсь сохранять и извлекать сообщения разговоров через VueJS.
В тот момент, когда я хочу вернуть свои сообщения:
// See last messages of the conversation
vueLastMessages(where, type, value) {
let that = this;
let lesMessages = [];
// console.log("Conv ID : ", value);
db.collection(msg).where(where, type, value).orderBy('timestp', "asc")
.onSnapshot(function (snapshot) {
snapshot.docChanges().forEach(function (change) {
if (change.type === "added") {
if (change.doc.data().timestp == Math.round(+new Date() / 1000)) {
console.log(change.doc.data().timestp);
console.log(Math.round(+new Date() / 1000));
lesMessages.push(change.doc.data());
}
else {
console.log(change);
console.log(change.doc.data().timestp);
// lesMessages.push(change.doc.data());
lesMessages.splice(0, 0, change.doc.data())
}
}
if (change.type === "modified") {
lesMessages.pop();
lesMessages.push(change.doc.data());
console.log("Modified message: ", change.doc.data());
}
if (change.type === "removed") {
lesMessages.pop();
console.log("Removed message: ", change.doc.data());
}
});
});
return lesMessages;
}
},
Я нахожу свои сообщения, но у меня проблема:
Первое сообщение больше не является первым, потому что Firestore возвращает мне два элемента с одинаковым newIndex:
{type: "added", doc: QueryDocumentSnapshot, oldIndex: -1, newIndex: 0}
{type: "added", doc: QueryDocumentSnapshot, oldIndex: -1, newIndex: 0}
Но отметки времени не в порядке:
1541169279
1539959608