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

2024-04-06

我正在从 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(使用前将#替换为@)

Cloud Firestore 中 get() 和 onSnapshot() 之间的区别 的相关文章

  • 如何实时改变setInterval的速度

    我想知道如何实时更改 setInterval 的速度 例如 if score lt 10 repeater setInterval function spawnEnemy 1000 if score gt 10 repeater setIn
  • axios 请求中未发送正文数据

    我试图通过 axios 请求将数据发送到我的后端脚本 但正文看起来是空的 这是前端发送的请求 axios request method GET url http localhost 4444 next api headers Authori
  • MailTo 从 Javascript

    我有一个链接按钮 用于从页面内容构建邮件 从 javascript 启动它而不打开空白窗口或干扰调用它的窗口的最佳方法是什么 function Email var sMailTo mailto var sBody var alSelecte
  • 类型错误:类扩展值未定义不是函数或 null

    尝试创建这些实体时出现以下错误 TypeError Class extends value undefined is not a function or null 我假设这与循环依赖有关 但是在使用表继承和一对多关系时应该如何避免这种情况
  • 使用 Firefox 插件 sdk 的 nsISocketTransportService

    我正在尝试使用 Firefox 来读取 SSH 横幅 IE 当您最初连接到 SSH 服务器时 服务器会向您发送其横幅 标识服务器软件 并且您向 SSH 服务器发送您的横幅 标识您的客户端软件 为此 我使用以下 URL 中的示例 firefo
  • JQuery datepickers-从开始日期设置结束日期

    使用了两个 Jquery 日期选择器 StartDate 和 EndDate
  • 水平滚动的表格上的“粘性”标题......完全不可能?

    经过过去几个小时的研究后 我开始认为这是不可能的 即使在最新的浏览器上也是如此 HTML table具有水平滚动的元素 带有 粘性 thead在顶部 作为垂直滚动的周围网页的一部分 这是我的尝试 a height 100px backgro
  • 如何在 React Native 上显示 SVG 文件?

    我想显示 svg 文件 我有一堆 svg 图像 但我找不到显示的方式 我尝试使用Image and Use的组成部分反应本机 svg https github com magicismight react native svg但他们不这样做
  • C# 和 Javascript SHA256 哈希的代码示例

    我有一个在服务器端运行的 C 算法 它对 Base64 编码的字符串进行哈希处理 byte salt Convert FromBase64String serverSalt Step 1 SHA256Managed sha256 new S
  • 将 Firebase FCM 添加到 ReactJS 应用程序

    我正在尝试向我的 ReactJS 应用程序中的用户发送推送通知 我已添加 firebase 请求用户通知权限 这正在发挥作用 但现在我想注册设备令牌 但这给了我错误 消息传递 我们无法注册默认的 Service Worker 无法注册 Se
  • ES6继承:使用`super`访问父类的属性

    JavaScript 的super关键字 当我在 Chrome Babel TypeScript 上运行代码时 得到了不同的结果 我的问题是哪个结果是正确的 规范的哪一部分定义了这种行为 下面的代码 class Point getX con
  • 为什么我收到“在嵌套函数中通过 this 对类字段进行潜在无效的引用访问”错误

    在普通 JS 中 我的代码可以正常工作 对于这种情况 我想组件化我的Wall类应该在浏览器中显示用户上传的图像 同样 这在 vanilla JS 中正常工作 但在 JSX 中不起作用 我得到了一个potentially invalid re
  • 模板中带有 ng-if 的 angularjs 指令

    我正在构建一个在模板内使用 ng if 的指令 奇怪的是 提供给链接函数的元素没有扩展ng if代码 它只是ng if的注释行 经过一番尝试 我发现通过将链接代码包装在 timeout 中似乎可以使其正常工作 但我想知道这是否不是正确的处理
  • 如何使用新的analytics.js跟踪多个帐户?

    我需要使用 Google 的新的analytics js 跟踪一个页面上两个帐户的综合浏览量 有大量教程和示例如何使用较旧的 ga js 进行操作 但我发现的只是这个分析文档页面 https developers google com an
  • Web组件中嵌套槽的内容不可见

    我有一个 Web 组件 它应该接受任意元素来包装其内容 虽然我可以在 Chrome 开发工具中看到插槽已正确分配 但 DOM 中什么也没有出现 以前有人见过这个问题吗 定义 class ExampleParent extends HTMLE
  • 尝试使用 Javascript 解决对称差异

    我正在尝试找出对称的解决方案 使用 javascript 完成以下任务的差异 目标 接受未指定数量的数组作为参数 保留数组中数字的原始顺序 不删除单个数组中数字的重复项 删除数组中出现的重复项 因此 例如 如果输入是 1 1 2 6 2 3
  • 尽管具有适当的角色,GCP VM 实例仍无法从 Secret Manager 访问密钥

    我在 GCP 中创造了一些秘密Secret Manager服务 然后为了在本地计算机上访问这些秘密 我创建了一个service account and a JSON用于从我的本地计算机验证该服务帐户的密钥 我也授予了这个角色Secret M
  • Jwt 签名和前端登录身份验证

    我有这个特殊的 jwt sign 函数 Backend const token jwt sign id user id process env TOKEN SECRET expiresIn 1m res header auth token
  • ng-include 和 ng-view 不同时加载

    下面是我的应用程序的结构 很简单 页眉和页脚是非常小的文件 而主页上的 ng view 要大得多 当我进入该页面时 我注意到了这一点 首先加载两个 ng include 然后 ng view 出现 页脚被推到底部 页脚闪烁大约 0 1 秒
  • 如何在 Jquery/Javascript 中绑定模糊和更改,但只触发一次函数?

    我试图在选择元素更改时触发函数 由于 Ipad 在 on change 方面遇到问题 我还想绑定到 blur 这在 Ipad 上工作得很好 但是我不希望两个事件都触发该函数两次 所以我需要某种挂钩来确保两个事件是否都触发change and

随机推荐

  • C# 程序员的 C++ [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我对 Java 和 C 的 OO 有很好的理解 而且我很幸运在我的工程课程中接触到了汇编程序和 C 的
  • 控制器中的@Transactional

    首先我想说 我完全同意只让服务层具有事务性 但有时世界并不完美 而现在我正处于这种情况之中 基本上我被分配到一个很棒的项目 遗留代码已经有 4 年多了 问题是 开发人员没有遵循任何引入业务逻辑的模式 因此您可以对来自控制器的多个服务调用进行
  • Tomcat 7 连接被拒绝

    我有一个在 Jelastic 上运行的 Tomcat 实例 并且有两个已部署的应用程序 用于 foo 上下文和 bar 上下文 在处理对 foo 的请求期间 我们向 bar 发出 HTTP 请求 用于授权 并且这里总是出现异常 Connec
  • 如何使用 Castle Core 或其他库(只是免费库)编写拦截器(AOP)以解决交叉问题

    我想要一个像这样的属性来处理横切关注点 例如 Logging Exception public class MyService Log Interception AOP ExceptionHandler Interception AOP p
  • 如何通过 CLI 快速重命名 macOS 或 Linux 上的文件?

    这是我的源文件 e2f9eb91 645f 408a 9241 66490b61a617 file module 1 txt d20f06a8 4de1 4da0 8175 93e9b2d81c42 file module 2 txt 67
  • 在 Windows 7 上通过 VPN 使用时 Git 无响应

    这是关于通过 VPN 处理本地存储库时简单 git 命令无响应的问题 我的 Windows 用户帐户 管理员角色 是我用来登录的域帐户 我有一些从 github 源克隆的本地存储库 场景 1 在没有 VPN 的 Windows 上使用本地存
  • xamarin.forms 处理 WebView 上的 Clicked 事件

    我想处理 WebView 控件上的单击 点击事件 我已经尝试过 GestureRecognizers 但没有任何反应 我认为 WebView 可能有某种方式使事件处理为 true
  • 设置 Angular-UI Select2 多重指令的初始值

    我有一个 select2 指令 用于多个选择的国家 地区 并使用自定义查询来获取数据 Directive
  • PHP 使用 sqlsrv 一次检索多行流内容

    这是一种后续行动这个问题 https stackoverflow com questions 67998821 create file system file from file stored in microsoft sql databa
  • 检查视频是否正在流式传输

    我有这个流来自http www tpai tv live http www tpai tv live但正如您现在所看到的 它已关闭 我需要检查流是否正在播放 如果不播放其他内容 这是流式传输代码
  • MimeMessage.saveChanges 真的很慢

    由于包含以下内容 以下测试的执行时间约为 5 秒m saveChanges import org junit Before import org junit Test import javax mail MessagingException
  • 哪些 C99 功能被认为是有害的或不受支持的 [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我通常在 C89 中编写 C 代码 现在使用 C99 的一些功能 例如intxx t or VA ARGS or snprintf 非常有用 甚
  • PHP 的 require 和 include 有什么区别?

    我知道PHP require require一次 include和includeonce的基本用法 但我对何时应该使用它们感到困惑 示例 我有 3 个文件 例如 settings php database php 和 index php 在
  • Cocoapods 不工作 Xcode 9.2

    Cocoapods 已安装但无法工作 Xcode 9 2 我尝试了这些解决方案https github com CocoaPods CocoaPods issues 3777 https github com CocoaPods Cocoa
  • 在调试中禁用应用程序洞察

    如何在使用调试配置时自动禁用应用程序洞察并仅在发布时启用它 是否可以在不创建另一个仅用于调试的仪器密钥的情况下执行此操作 I have trackevent语句分散在代码中 将它们包含在调试预处理器检查中并不是理想的解决方案 我当前的解决方
  • 如何告诉 find 命令转义文件名中的空格字符?

    我有一个单行 find 命令 它递归地检查并打印出在特定时间范围内创建的特定文件类型的大小 所有者和名称 但在结果中 给出文件名列 直到目录或文件名中的第一个空格字符为止 有没有办法在这个单一命令中解决这个问题 而无需在 bash 中编写任
  • 在android中使用OpenGL在按钮上单击绘制形状

    作为 android OpenGL 部分的新手 我已经下载了现场给出的示例使用 OpenGL ES 显示图形 http developer android com training graphics opengl index html so
  • Chrome 中的 Javascript 执行跟踪 - 如何进行?

    我在网站上加载了约 100 200 个 JavaScript 函数 我想确定当我单击 Google Chrome 中的一项或多项时执行什么 JavaScript 函数 我如何使用 Chrome Web 开发人员工具来做到这一点 谢谢 一种简
  • 基于流的应用程序中的受控/手动错误/恢复处理

    我正在开发一个基于的应用程序Apache Flink 它利用Apache Kafka用于输入和输出 该应用程序可能会被移植到Apache Spark 所以我也将其添加为标签 问题仍然相同 我要求通过 kafka 接收的所有传入消息必须按顺序
  • Cloud Firestore 中 get() 和 onSnapshot() 之间的区别

    我正在从 Firebase 的 Cloud Firestore 读取一些数据 但我已经看到了几种方法来做到这一点 我看到的示例使用了 get 和 onSnapshot 函数 如下所示 db collection cities doc SF