我正在从 Firebase 的 Cloud Firestore 读取一些数据,但我已经看到了几种方法来做到这一点。我看到的示例使用了 get 和 onSnapshot 函数,如下所示:
db.collection("cities").doc("SF")
.onSnapshot(doc => {
console.log(doc.data());
});
or this
var docRef = db.collection("cities").doc("SF");
docRef.get().then(doc => {
if (doc.exists) {
console.log("Document data:", doc.data());
} else {
console.log("No such document!");
}
}).catch(function(error) {
console.log("Error getting document:", error);
});
他们之间有什么区别吗?
正如中所解释的doc https://firebase.google.com/docs/firestore/query-data/get-data:
有two ways检索存储在 Cloud Firestore 中的数据。任何一个
这些方法可以与文档、文档集合一起使用,
或查询结果:
- 调用一个方法来获取数据。
- 设置监听器来接收数据更改事件。
当您设置侦听器时,Cloud Firestore 会向您的侦听器发送
数据的初始快照,然后每次都生成另一个快照
文档变更。
当你使用get()
您“检索单个文档的内容”只有一次。这是一种“一劳永逸”的方式:如果文档在(后端)Firestore 数据库中发生更改,您将需要调用get()
再次查看变化。
对面,如果您使用onSnapshot()
方法你不断地倾听到文档中解释的doc https://firebase.google.com/docs/firestore/query-data/listen:
您可以使用以下命令收听文档onSnapshot()
方法。一个初始的
使用您提供的回调进行调用会创建文档快照
立即使用单个文档的当前内容。然后,每次内容改变时,另一个调用更新文档
快照。
正如这些文档中所解释的,这两种方法适用于一个文档或一组文档(包括query https://firebase.google.com/docs/firestore/query-data/queries).
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)