javascript - 获取 Firestore 集合后如何只运行一次?
问题描述
我有以下查询:
firestore()
.collection('users')
.doc(userId)
.onSnapshot(doc => setUser(doc.data()))
.once(() => {
// Do some things just once here!
});
setUser
每次集合的数据更改时,我都需要运行该函数,因此我设置了一个快照侦听器,它运行良好。
但once
部分不是。我需要该函数中的内容只执行一次(第一次运行查询,然后再也不执行。我有错误的方法吗?Firestore 中是否有内置方法或其他方式来执行此操作?
解决方案
这不是 SDK 支持的工作流。您只需要编写一些代码来表达这一点:
let first = true
firestore()
.collection('users')
.doc(userId)
.onSnapshot(doc => {
setUser(doc.data());
if (first) {
first = false;
// Do some things just once here!
}
})
推荐阅读
- html - 悬停不适用于列表中的所有元素
- vba - 在 MS Word VBA 中,使用出现的数字插入对编号项目编号的交叉引用的方法
- java - 使用正则表达式替换所有奇数出现的子字符串
- node.js - 在 NodeJS 服务器中设置 Angular 6 base_url 不指向根
- reactjs - react-router 我可以在没有定义嵌套路由器的情况下拥有类似嵌套的路径吗?
- ios - 关于美国申请的出口合规性
- javascript - 在Javascript中查找字符串的父元素
- ruby-on-rails - Rails 路由:从 Mailer 或 Controller 更改 path_prefix
- html - 导航栏链接在 iOS 上不起作用的问题
- javascript - 如何使用云功能通过 webhook 将 Dialogflow 中的用户响应保存到 google cloud firestore