【问题标题】:Difference between get() and onSnapshot() in Cloud FirestoreCloud Firestore 中 get() 和 onSnapshot() 的区别
【发布时间】:2019-06-26 01:17:37
【问题描述】:

我正在从 Firebase 的 Cloud 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);
        });

它们之间有什么区别吗?

【问题讨论】:

    标签: javascript firebase google-cloud-firestore


    【解决方案1】:

    doc中所述:

    两种方法可以检索存储在 Cloud Firestore 中的数据。任何一个 这些方法中的一些可以用于文档、文档集合、 或查询结果:

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

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

    当您使用get() 时,您“仅检索单个文档的内容”一次。这是一种“一劳永逸”:如果(后端)Firestore 数据库中的文档发生更改,您将需要再次调用 get() 以查看更改。

    相反,如果您使用onSnapshot() 方法,您不断地收听文档,如doc 中所述:

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

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

    【讨论】:

    猜你喜欢
    • 2019-06-22
    • 2020-02-07
    • 2018-09-18
    • 2021-06-26
    • 2019-07-07
    • 2020-08-01
    • 2019-01-22
    • 2020-01-26
    • 1970-01-01
    相关资源
    最近更新 更多