Что эквивалентно on. (Child_added) на firesore?

1

Начало работы с firestore здесь :)

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

Аналогично тому, как .on("child_added") работал в базе данных реального времени.

Например:

// logs the entire collection.
db.collection("categories").onShapshot(snap => console.log(snap));

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

Я хочу использовать это для обновления/удаления/создания этого документа в dom в режиме реального времени.

Я не вижу, как это сделать на основе документов firebase

Эта супер важная и основная функция намеренно не поддерживается больше?

Или просто я не вижу ничего очевидного. Заметьте, у меня нет ничего конкретного для запроса.

Я просто хочу вернуть конкретную категорию после ее создания. Спасибо :)

Теги:
firebase
google-cloud-firestore

1 ответ

2
Лучший ответ

При изменении данных для вашего запроса вы QuerySnapshot со всем новым набором данных для этого запроса в QuerySnapshot. Но в этом снимке есть информация о том, что изменилось. Если вы хотите что-то сделать только с добавленными документами, проверьте, был ли этот документ добавлен с этим образцом из документации:

db.collection("cities").where("state", "==", "CA")
    .onSnapshot(function(snapshot) {
        snapshot.docChanges().forEach(function(change) {
            if (change.type === "added") {
                console.log("New city: ", change.doc.data());
                // This is equivalent to child_added
            }
            if (change.type === "modified") {
                console.log("Modified city: ", change.doc.data());
                // This is equivalent to child_changed
            }
            if (change.type === "removed") {
                console.log("Removed city: ", change.doc.data());
                // This is equivalent to child_removed
            }
        });
    });

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

  • 0
    спасибо за ответ :) Я прочитал это. в моем случае мне нечего фильтровать. Могу ли я жить как .where().onSnapshot ? Почему предполагается, что я хочу сделать запрос? Я нахожусь в некотором анти-шаблонном использовании?
  • 1
    Вам не нужно запрашивать. change.type доступен в любом onSnapshot , включая ваш.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню