#javascript #firebase #google-cloud-firestore
# #javascript #firebase #google-облако-firestore
Вопрос:
У меня следующий запрос:
firestore()
.collection('users')
.doc(userId)
.onSnapshot(doc => setUser(doc.data()))
.once(() => {
// Do some things just once here!
});
Мне нужно setUser
, чтобы функция запускалась каждый раз при изменении данных коллекции, поэтому я настроил прослушиватель моментальных снимков, и он отлично работает.
Но once
это не так. Мне нужно, чтобы вещи внутри этой функции выполнялись только один раз (при первом запуске запроса и никогда больше. У меня неправильный метод? Есть ли встроенный метод или какой-либо другой способ в Firestore для этого?
Ответ №1:
Это не рабочий процесс, поддерживаемый SDK. Вам просто нужно написать некоторый код, чтобы выразить это:
let first = true
firestore()
.collection('users')
.doc(userId)
.onSnapshot(doc => {
setUser(doc.data());
if (first) {
first = false;
// Do some things just once here!
}
})
Комментарии:
1. Бах, я надеялся избежать установки флагов, но, думаю, встроенного способа нет..
2. Вы можете выполнить либо один ответ,
get()
либо прослушатьonSnapshot()
, но не оба в одном. Вы всегда можете отправить запрос функции с поддержкой Firebase, но я не видел, чтобы это появлялось у кого-либо вообще с момента запуска Firestore.