Так как get()
получает ваше значение только один раз, он всегда проверяет последнее значение для данных с сервера.Если это первая операция Firestore в вашем приложении, для этого может потребоваться установить сетевое соединение с базой данных, что может занять некоторое время.
Если вы хотите быстро получить данные из кэша, а затем получить изменения с сервера, используйте onSnapshot
:
db.collection("cities").where("capital", "==", true)
.onSnapshot(function(querySnapshot) {
querySnapshot.forEach(function(doc) {
// doc.data() is never undefined for query doc snapshots
console.log(doc.id, " => ", doc.data());
});
})
.catch(function(error) {
console.log("Error getting documents: ", error);
});
Также см. Документацию Firestoreпри получении обновлений в реальном времени
Чтобы сообщить get()
о возврате данных из кэша, выполните:
db.collection("cities").where("capital", "==", true)
.get({ source: 'cache' })
.then(function(querySnapshot) {
...
Но учтите, что это означает, что вы никогда не получите обновленное значение изсервер.