如何在不使用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
相关产品推荐
相关产品推荐

