javascript - Google Firestore 监听实时更新
问题描述
我有以下代码来记录我的所有文档数据。问题是我只在函数运行时收到更新。我想知道如何设置一个监听器,在数据更改时记录到控制台
const db = firebase.firestore();
const todoRef = db.collection("todo");
const list = (date) => {
console.log(date);
return todoRef
.where("owner", "==", firebase.auth().currentUser.uid)
.where("date", "==", date)
.get()
.then((querySnapshot) => {
const data = [];
querySnapshot.forEach((doc) => {
const d = {
id: doc.id,
...doc.data(),
};
data.push(d);
});
return data;
});
};
console.log("database stuff", list("2021 - 07 - 12"));
解决方案
文档中有一个收听多个文档部分。
db.collection("cities").where("state", "==", "CA")
.onSnapshot((querySnapshot) => {
var cities = [];
querySnapshot.forEach((doc) => {
cities.push(doc.data().name);
});
console.log("Current cities in CA: ", cities.join(", "));
});
您只需要使用onSnapshot
而不是get
.
推荐阅读
- asp.net-mvc - 无法创建正确的 OpenID Connect 配置端点 (v2)
- r - 数据帧中的可变偏移和匹配
- python - AttributeError: 'set' 对象在调用 scipy 优化器时没有属性 'get'
- qt - 在 QML 中尝试使用“MediaPlayer”播放音频文件时出现“无效媒体”
- vue.js - 浏览器缓存问题
- matplotlib - Tkinter 日期选择器
- sql - 从 Oracle 数据库表创建 json
- html - 尝试使用 R 从网页中抓取商业网站
- mysql - 错误:连接 ECONNREFUSED 127.0.0.1:3306(数据库未在节点 js 中与 mysql 连接)
- javascript - ejs <%- body %> 正文未定义