为什么即使在使用异步等待多个调用后仍然得到空响应?

2024-02-09

这是简单的节点路由,其中​​调用异步api.

需要做的是return data循环之后。但它返回空白对象。

try {
  const array = ["brunch", "lunch", "crunch"]
  const data = {}
  array.map(async(d) => {
    const venue = await Venue.find({ "category": { "$in": [d] }})
    data[d] = venue
  })
  return data
} catch(err) {
  throw err
}

请帮助我实现这一目标


有一种更好的方法可以使用 MongoDB 获得所需的结果,并且无需循环,使用聚合框架,您可以在其中运行以下管道,该管道使用$facet https://docs.mongodb.com/manual/reference/operator/aggregation/facet/ as

try {
    const array = ["brunch", "lunch", "crunch"]
    const facet = array.reduce((acc, cur) => {
        acc[cur] = [{ "$match": { "category": cur } }]
        return acc
    }, {})
    const pipeline = [
        { "$match": { "category": { "$in": array } } },
        { "$facet": facet }
    ]
    const results = await Venue.aggregate(pipeline).exec()
    const data = results[0]

    return data
} catch(err) {
    throw err
}

您还可以按类别键对文档进行分组$push https://docs.mongodb.com/manual/reference/operator/aggregation/push/每组的文档,然后转换为文档中的键$replaceRoot https://docs.mongodb.com/manual/reference/operator/aggregation/replaceRoot/ with $arrayToObject https://docs.mongodb.com/manual/reference/operator/aggregation/arrayToObject/

try {
    const array = ["brunch", "lunch", "crunch"]
    const pipeline = [
        { "$match": { "category": { "$in": array } } },
        { "$group": { 
            "_id": "$category",
            "data": { "$push": "$$ROOT" }
        } },
        { "$group": {
            "_id": null,
            "venues": {
                "$push": {
                    "k": "$_id",
                    "v": "$data"
                }
            } 
        } },
        { "$replaceRoot": {
            "newRoot": { "$arrayToObject": "$venues" }
        } }
    ]
    const results = await Venue.aggregate(pipeline).exec()
    const data = results[0]

    return data
} catch(err) {
    throw err
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么即使在使用异步等待多个调用后仍然得到空响应? 的相关文章

随机推荐

  • 是否可以将 char * 转换为结构?

    这是我的问题 rcvfrom 参数之一是 char 一旦我从中获取数据 我想将其转换为结构 然而选角并不成功 我究竟做错了什么 这是我所做的 struct int8 t seq int8 t ack bool flag char data
  • Jenkins 将构建参数传递给 email-ext 模板

    如何将构建参数传递给 email ext jelly 模板 在进行一些构建之前 我想放置不同的自定义消息 一些公告 非代码更改 决策等 我正在考虑将其作为构建参数 以便我看到一个屏幕 提示我输入如果我要手动构建 请发送消息 编辑 我找到了一
  • 在 Bash 中检查字符串是否包含斜杠或反斜杠?

    我目前正在尝试让我的 bash 脚本检查字符串是否包含 or a 但不知何故我无法让它工作 这是我到目前为止得到的 if 1 then elif if 1 then fi 非常感谢帮助 谢谢 这检查是否 or 都在变量中 string if
  • Ant Javac 和 Commandline Javac 给出不同的结果

    我有一个导入一些 servlet 库的类 当我从命令行编译它时 一切都很好 当我使用 ant 编译任务来编译它时 它给出了在其路径中找不到 servlet 库的错误 这是已知 常见的现象吗 这是我的 Ant 目标
  • 使用 getElementsByTagName 选择所有 div

    我正在做一个项目 我只能使用 JS 来操作 HTML 文件 我想更改 HTML 中所有 div 的背景颜色 目前我有以下内容 Highlight Function function highlight e e target style ba
  • 如何删除单个换行符?

    我想删除文本中的单行符 但不删除双行符 我可以使用替换行 r n 如何删除单个换行符 EDIT 我还需要在每行之前添加空格 例如 如果原始文本是 line1 line2 line3 它必须转换为 line1 line2 line3 如果我明
  • 如何解决“未捕获的类型错误:将循环结构转换为 JSON”

    我正在执行一个网页 但在控制台上检查它时显示以下错误 未捕获的类型错误 将循环结构转换为 JSON console log JSON stringify physicianInfo Ext Ajax request async true u
  • Netbeans 可以在特定虚拟机中运行项目吗?

    我的 Win7 系统上安装了 64 位 Java 7 JDK 然而 我正在从事的项目之一需要调用一些古老的 C DLL 通过 JNI 而我只有 32 位版本 如果我尝试在 64 位 JVM 中运行它 我会收到错误 无法在 AMD 64 位平
  • EXCEL 应用程序窗口未在 workbook.close() 上关闭

    当我使用打开工作簿时 wbTest xlwings Book test xlsm EXCEL 应用程序打开并显示工作簿 但是当做一个 wbTest close 之后 工作簿关闭 但 EXCEL 窗口保持打开状态 因此我必须手动关闭它 即使x
  • 如何在jquery中通过url发送json并在下一个html页面上解析它?

    我想通过 url 将 json 数据发送到下一个 html 页面 我通过模拟器检查了它 因为我正在为移动应用程序工作 网址无法重定向到下一页 它目前正在崩溃 这背后的原因是什么 我如何在下一页解析它 我是 jquery 新手 有什么想法吗
  • 如何将我们自己的选项添加到“使用完成操作”菜单

    我想从 使用完成操作 弹出菜单运行我的应用程序 我创建了一个小应用程序 它是 文件编辑器 当我单击任何文件管理器中的任何 txt 文件时 我希望我的应用程序也位于 使用 popmp 菜单完成操作 中 您需要向 Android manifes
  • 在 Ubuntu 20.04 上设置 ONNX 运行时(C++ API)

    我目前正在尝试让我的图像处理程序在 Ubuntu 来自 Windows 上运行 我已经成功构建并链接了 OpenCV 和 Boost 库以与我的 cpp 程序一起使用 但是我还没有找到任何关于在 Ubuntu 20 04 上设置 Onnx
  • r动画,参数曲线

    我正在使用动画包来绘制参数曲线 x sin t 和 y sin t 2 以及使用以下代码追踪曲线的圆 require animation x lt seq 1 1 length 20 y lt x 2 plot x y type l lib
  • execve("/bin/sh", 0, 0);在管道中

    我有以下示例程序 include
  • 从私有 Docker 注册表中删除镜像的方法

    我设置了一个私有 Docker 注册表 并且我已将其他计算机上的一些映像推送到此注册表 它是一个 V2 注册表 我不知道从存储库中删除图像的新方法 因为这些推送的图像没有在 CLI 中列出 docker 图像 谁能建议我从磁盘中删除这些图像
  • 为 302 重定向到的另一个域设置 cookie

    这个问题比其他任何问题都更像是一个现实检验 我很确定这是可能的 但想确定一下 我正在编写一个代理服务器 它接收 HTTP 请求 将它们传递到远程服务器 然后返回远程服务器的响应 我遇到了一个问题 远程服务器响应之一是设置 cookie 的
  • _popen: 不显示 shell 窗口 (SW_HIDE)

    当我在 c mfc 中执行 popen 命令时 它会打开一个我不喜欢的 shell 窗口 是否可以将其隐藏 例如 当您尝试使用 ShellExecute 函数执行命令时 它可以选择使用 SW HIDE 隐藏 shell 窗口 注释来自文档
  • 如何从 django 的查询集中排除非活动用户

    我想从我的项目中排除非活跃用户 example 1 url users 1 friends will show all friends of that user 我想只显示朋友列表中的活跃用户 example 2 url users 1 f
  • 如何在 iOS 上开始使用 ARM?

    只是好奇如何开始了解 iOS 下的 ARM 任何帮助都会非常好 在我看来 最好的开始方式是 编写 C 代码小片段 后来的 Objective C 查看对应的汇编代码 找出足以理解汇编代码的内容 Repeat 为此 您可以使用 Xcode 创
  • 为什么即使在使用异步等待多个调用后仍然得到空响应?

    这是简单的节点路由 其中 调用异步api 需要做的是return data循环之后 但它返回空白对象 try const array brunch lunch crunch const data array map async d gt c