You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在不使用async/await的情况下解析Mongoose函数返回的Promise

解决方案:用Promise的.then()/.catch()链式调用解析结果

因为你的createCategory方法最终返回的是Mongoose Category.create()生成的Promise对象,在不能使用async/await的控制器里,直接用Promise的回调链式调用就能拿到实际响应,不需要依赖async/await。

修改你的控制器代码如下:

// 控制器文件(无需async/await)
Category.createCategory(categoryName)
  .then(createdCategory => {
    // 这里拿到创建成功后的实际记录,执行后续操作
    console.log('创建完成:', createdCategory);
    // 比如要返回响应(以Express为例):
    // res.status(201).json({ data: createdCategory });
  })
  .catch(error => {
    // 处理创建过程中的错误
    console.error('创建失败:', error);
    // 错误返回:
    // res.status(500).json({ error: error.message });
  });

关键点说明

  • 你之前直接赋值let response = Category.createCategory(...)得到的是未解析的Promise,必须在.then()的回调函数里才能获取到实际的创建结果。
  • .then()会在Promise成功resolve时触发,参数就是你需要的响应数据;.catch()则捕获Promise被rejected的错误情况(比如数据库写入失败、字段验证错误等)。
  • 你的通用函数和DB层代码不需要改动,它们返回的Promise可以直接被控制器的.then()/.catch()处理。

内容的提问来源于stack exchange,提问作者Ritesh Arora

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 21:27:26