Начало работы с firestore здесь :)
Я хочу получать событие каждый раз, когда документ обновляется или создается внутри коллекции. Я хочу получить только один документ.. один обновленный/созданный/удаленный.. и т.д. Я не хочу получать коллекцию дырок для каждого изменения.
Аналогично тому, как .on("child_added")
работал в базе данных реального времени.
Например:
// logs the entire collection.
db.collection("categories").onShapshot(snap => console.log(snap));
Дает мне список категорий снова. Вместо того, чтобы просто создать документ, который был создан.
Я хочу использовать это для обновления/удаления/создания этого документа в dom в режиме реального времени.
Я не вижу, как это сделать на основе документов firebase
Эта супер важная и основная функция намеренно не поддерживается больше?
Или просто я не вижу ничего очевидного. Заметьте, у меня нет ничего конкретного для запроса.
Я просто хочу вернуть конкретную категорию после ее создания. Спасибо :)
При изменении данных для вашего запроса вы 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 } }); });
Обратите внимание, что немодифицированные данные для этого слушателя считываются из локального кеша, поэтому его не нужно перечитывать с сервера.
.where().onSnapshot
? Почему предполагается, что я хочу сделать запрос? Я нахожусь в некотором анти-шаблонном использовании?change.type
доступен в любомonSnapshot
, включая ваш.