Могу ли я обновить документ Firestore без немедленной визуализации изменений? - PullRequest
0 голосов
/ 28 января 2019

У меня есть функция, которая позволяет пользователям голосовать за определенный контент.Контент отсортирован в порядке голосов.В настоящий момент, если пользователь проголосует против некоторого контента, который затем имеет больше голосов, чем контента, отображаемого перед ним, порядок контента немедленно изменится (так как я использую базу данных Firestore в реальном времени).

Есть ли способ, которым я могу предотвратить это?Я хочу, чтобы порядок не изменился, если пользователь не обновит страницу.

Ответы [ 2 ]

0 голосов
/ 28 января 2019

Похоже, вы используете Режим реального времени Firestore , который вызывает ваш метод onSnapshot всякий раз, когда происходит изменение данных.Из документации:

db.collection("cities").doc("SF")
    .onSnapshot(function(doc) {
        console.log("Current data: ", doc.data());
    });

Cloud Firestore также имеет метод, который просто считывает данные один раз .Вы можете использовать это, чтобы просто показать данные один раз или сохранить полный контроль над тем, когда данные будут прочитаны.Из документов:

docRef.get().then(function(doc) {
    if (doc.exists) {
        console.log("Document data:", doc.data());
    }
})
0 голосов
/ 28 января 2019

Есть ли способ, которым я могу предотвратить это?Я хочу, чтобы порядок не изменился, если пользователь не обновит страницу.

Да, это можно предотвратить двумя способами.Первый подход заключается в том, чтобы прекратить использование функции обновлений Firestore в реальном времени и получать данные только один раз .Как видите, это возможно, если вы просто используете вызов get () .

В соответствии с официальной документацией относительно функции onSnapshot () CollectionReference:):

Присоединяет прослушиватель событий QuerySnapshot.Слушатель можно отменить, вызвав функцию, возвращаемую при вызове onSnapshot.

Таким образом, второй подход заключается в том, чтобы продолжить использовать функцию обновления в реальном времени, но удалить слушателя один раз.больше не нужен.

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