Firestore возвращает два новых индекса 0 - PullRequest
0 голосов
/ 02 ноября 2018

Возникла проблема с использованием 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

1 Ответ

0 голосов
/ 06 ноября 2018

Решено с помощью справочной службы Firestore:

НЕ звоните

.onSnapshot(function (snapshot) {

функция дважды. Любой ценой. Это приведет к этой странной ошибке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...