Cloud Firestore中的get()和snapshot()之间的区别

时间:2019-02-01 12:49:25

标签: javascript firebase google-cloud-firestore

我读从火力地堡的云计算公司的FireStore一些数据,但我已经看到了几种方法来做到这一点。我看到的示例使用了get和onSnapshot函数,如下所示:

db.collection("cities").doc("SF")
 .onSnapshot(doc => {
      console.log(doc.data());
 });

或这个

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);
        });

它们之间有什么区别吗?

1 个答案:

答案 0 :(得分:3)

doc中所述:

  

两种方式可以检索Cloud Firestore中存储的数据。要么   这些方法中的一种可以用于文档,文档集合,   或查询结果:

     
      
  • 调用方法以获取数据。
  •   
  • 设置一个侦听器以接收数据更改事件。
  •   
     

设置监听器后,Cloud Firestore会向您的监听器发送一个   数据的初始快照,然后每次   文档更改。

使用get()时,“仅检索一次”即可“检索单个文档的内容”。这是一种“忘却”:如果文档在(后端)Firestore数据库中发生更改,则需要再次调用get()才能看到更改。

反之,如果您使用onSnapshot()方法,您将按照doc中的说明不断收听文档:

  

您可以使用onSnapshot()方法收听文档。首字母缩写   使用您提供的回调进行调用以创建文档快照   立即使用单个文档的当前内容。然后,   每次内容更改时,另一个调用会更新文档   快照。

如这些文档所述,这两种方法适用于一个文档或文档集合(包括query)。