能否在catch代码块中更新Mongoose模型?
是否可以在catch代码块中更新Mongoose模型的属性?
完全可以在catch代码块中更新Mongoose模型的属性并执行保存操作,这是很常见的错误处理场景——比如在核心操作失败时,标记模型状态为失败。
不过你提供的示例代码存在语法错误,需要修正:
- 模型属性赋值(
model.status = 'xxx')是同步的内存操作,不需要加await,await只能用于异步Promise操作; - 只有
model.save()是异步方法,必须加await等待完成。
修正后的正确代码如下:
try { model.status = 'success'; await model.save(); } catch(err) { model.status = 'failure'; await model.save(); }
额外提醒两点:
- 确保catch块中的
model实例仍然有效,没有被意外销毁或修改; - 如果catch块里的
save()也有失败风险,可以考虑嵌套一层try/catch来处理这个场景,避免报错被忽略。
内容的提问来源于stack exchange,提问作者justrying
相关产品推荐
相关产品推荐

