请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

老师你好,我有个问题想请教下

在你这个 express 里面该如何做异常处理呢? 如果是 routes,或者单纯的 controller 的话,用一个中间件来做挺好。 但是要是涉及到 model 层面的话,例如说我保存的时候与数据库交互发生了错误该如何处理呢? 有没有什么全局处理的好办法,当然写法不是像视频中这样采用回调的, 而是全都是 async,await,只能给每一个可能发生的 try catch 么

正在回答 回答被采纳积分+3

1回答

提问者 小学生6年级 2020-02-14 15:59:19

我说一下我的思路,老师能麻烦看看合适不合适么,因为还是在校生,学前端的,正在接触后端,所以还很多不懂。

// routes 
router.post("/create", positionController.wrap )

// controller
const wrap = async function (req, res) {
  try {
    await createPosition(req, res)
  } catch (e) {
    throw new SaveError(arguments...)
  }
}

//model
正常保存,不处理任何异常,就是老师代码中的 createPosition。

在 controller 函数里面定义的这个 saveError 是继承我自定义的一个 HttpError,然后在 express 中间件中写我们的全局异常捕获,switch 或者 if 判断是哪个具体的 error,来做具体处理。 

可是这样的话感觉这个 controller 是不是有点怪怪的,所以想请教下老师。

0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信