首页 > 解决方案 > 获取 Firestore 集合后如何只运行一次?

问题描述

我有以下查询:

firestore()
  .collection('users')
  .doc(userId)
  .onSnapshot(doc => setUser(doc.data()))
  .once(() => {
    // Do some things just once here!
  });

setUser每次集合的数据更改时,我都需要运行该函数,因此我设置了一个快照侦听器,它运行良好。

once部分不是。我需要该函数中的内容只执行一次(第一次运行查询,然后再也不执行。我有错误的方法吗?Firestore 中是否有内置方法或其他方式来执行此操作?

标签: javascriptfirebasegoogle-cloud-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!
    }
  })

推荐阅读