如何将 Firestore 查询转换为 Javascript 数组

2024-02-12

我正在尝试导出一个 firestore 函数,该函数执行查询并返回包含该查询中的对象的数组。我正在尝试从文档的子集合中获取数据,并获取返回的文档对象数组以呈现给客户端。

我已经尝试了以下方法,但它不起作用(例如,对象返回空白)。我认为这与承诺处理不当有关,但我自己无法解决。感谢您的帮助。

export const getEvents = (id) => {
  let events = [];
  firestore.collection('users')
    .doc(id)
    .collection('events')
    .get()
    .then((snapshot) => {
      snapshot.forEach((doc) => events.push(doc));
    });
    return events;
 };

您正确地确定此问题与承诺的处理有关。您将在有机会填充事件数组之前返回事件数组,因为承诺尚未解决。

如果您的环境允许,我建议您使用 async/await,因为它使代码更容易阅读和理解,如下所示:

export const getEvents = async (id) => {
    let events = [];
    const snapshot = await firestore.collection('users')
        .doc(id)
        .collection('events')
        .get()
    snapshot.forEach((doc) => events.push(doc));
    return events;
};

但如果你不能使用 async/await,你可以使用 Promise 来实现。但您只需要在获取数据后解决承诺:

const getEvents = (id) => {
    return new Promise((resolve, reject) => {
        let events = [];
        const snapshot = firestore.collection('users')
            .doc(id)
            .collection('events')
            .get()
            .then((snapshot) => {
                snapshot.forEach((doc) => events.push(doc));
                resolve(events); // return the events only after they are fetched
            })
            .catch(error => {
                reject(error);
            });
    });
};
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将 Firestore 查询转换为 Javascript 数组 的相关文章

随机推荐

  • 尝试 doSMP 示例时出错

    我尝试运行 doSMP 小插图中的简单示例 但出现以下错误 首先 我不确定如何存在现有的 doSMP 会话 因为我在重新启动计算机后立即执行了下面的代码 此外 关于包 doSMP 不存在的重复错误 但库 doSMP 调用工作正常 帮助 gt
  • 如何在 Android 模拟器中缩小 Google 地图?

    我正在模拟器上测试基于地图的应用程序 我通过在屏幕上双击鼠标来放大地图 但无法缩小 请告诉我如何缩小 双击然后按住第二次单击并向上 缩小 或向下 放大 移动鼠标
  • KineticJS 撤消图层:撤消时图层不会消失?

    我在 Canvas HTML5 中的设计器绘图工具上遇到了一个特定问题 我正在开发一个动作历史系统 撤消和重做 我正在构建我的系统projeqht的回答这个问题 https stackoverflow com questions 16096
  • React Hooks 上的 useState 不更新数组

    我已经尝试了很多方法 但似乎无法理解为什么 setTypes 不会更新 类型 数组 import useState useEffect from react import PostList from post list import as
  • 在 cassandra 中创建表时出错 - 错误请求:只能在 CLUSTERING ORDER 指令中定义集群键列

    当我尝试使用以下 cql 语句时出现上述错误 不确定它出了什么问题 CREATE TABLE Stocks id uuid market text symbol text value text time timestamp PRIMARY
  • glGenFramebuffers 还是 glGenFramebuffersEXT?

    我很困惑 要在 Windows 上的 OpenGL 1 x 中使用帧缓冲区对象扩展 FBO 我应使用以下哪一个 wglGetProcAddress glGenFramebuffers or wglGetProcAddress glGenFr
  • 将从 Promise 返回的值分配给全局变量

    我正在尝试从量角器读取浏览器内存值并将它们存储在全局对象中 为此 我获取 window performance memory 对象 然后解决检查每个内存值的承诺 问题是我似乎无法将值分配给全局变量 我尝试过以下代码 但似乎效果不太好 thi
  • 如果绑定,Bootstrap CSS table-striped 不适用于剔除

    假设我有下表适用于 bootstrap css 和淘汰赛 table class table table striped table bordered table hover table condensed tbody tr td td t
  • Python:“”未定义

    这是我的代码 This program makes the robot calculate the average amount of light in a simulated room from myro import init simu
  • 为什么FunctionN(0-22) ProductN(1-22) TupleN(1-22)?

    该 API 有 FunctionN 0 22 ProductN 1 22 TupleN 1 22 问题是 1 为什么数字是22结尾 为什么不是21或23 2 为什么函数以0开头 但 Product 和 Tuple 不是吗 拥有一个没有意义P
  • 防止 标记中自动换行

    我有一个htmlcode标签 包裹在pre具有固定宽度的标签 并且自动换行变得难看 我想要实现的是 文本不会自动在空格上断开 但是当我添加white space nowrap to the code元素 整个内容折叠成一行 因此所有 n 和
  • PyQt4:如何迭代 QListWidget 中的所有项目

    目前 我在继承 QtGui QListWidget 的类中使用以下 while 循环来迭代所有项目 i 0 while i lt self count item self item i i 1 我希望我可以使用 for item in se
  • OllyDbg 无法调试 Visual Studio exe

    我刚刚使用以下简单代码创建了一个新的 vc exe include
  • 如何在 SSMS 单元格中输入“NULL”?

    在 SQL Server Management Studio 2012 中 我将数据键入 粘贴到表中 通过编辑前 200 行 每当我输入 粘贴时NULL在一个细胞中 一个NULL值已插入 显然它认为我的意思是NULL值而不是 NULL 文本
  • 地址范围:寿命不够长

    我对这两个看似相似的程序的结果感到惊讶 fn main let y int 31i println My number is y Output My number is 31 但是 这段代码给了我一个错误 fn main let y int
  • 在 GAE/python 中存储密码的最佳实践

    我需要在我的 GAE python2 7 应用程序中实现密码存储 我已经实现了 cookie 进行授权 我已经有了帐户 用户模型 并且我已经通过第三方进行了身份验证 现在我需要通过密码添加身份验证 客户请求 我希望安全地存储密码 我已经确定
  • 具有自定义字体的 TextView 未垂直居中

    我需要使用自定义字体 VAG Rounded 可能不相关 但字体会改变我的 TextView 的反应方式 在下图中 您可以看到两个具有黑色背景的文本视图 左边一种使用自定义字体 右边一种使用默认系统字体 Roboto 它们都有相同的 xml
  • gulp - 缩小 CSS 时排除文件

    我是 Gulp 新手 我已经能够成功安装 连接和缩小我的 js 和 css 文件 但是 有一个我想排除的 css 文件 print css 我已按照此处的说明进行操作 https www npmjs org package gulp ign
  • 仅捕获 arp-reply 数据包的 BPF 表达式

    有没有BPF http biot com capstats bpf html只捕获 arp reply 数据包的表达式 目前 我正在使用 Pcap4J 和以下 BPF 表达式 arp 和 dst 主机host和乙醚 dstmac where
  • 如何将 Firestore 查询转换为 Javascript 数组

    我正在尝试导出一个 firestore 函数 该函数执行查询并返回包含该查询中的对象的数组 我正在尝试从文档的子集合中获取数据 并获取返回的文档对象数组以呈现给客户端 我已经尝试了以下方法 但它不起作用 例如 对象返回空白 我认为这与承诺处