我的路线定义是:
app.put '/api/v1/user/oldest', userController.oldestAndUpdate, responder
在userController
中,我有:
exports.oldestAndUpdate = (req, res, next) ->
doSomeStuff, (err, results) ->
return next err if err
req.apiResponse = results
next()
在我的responder
中,我有:
module.exports = (req, res, next) ->
response = req.apiResponse
response.status = 'ok'
res.json response
但我如何处理错误案例?如果next(err)
被击中,我的响应者将如何知道有错误?
答案 0 :(得分:2)
如果传递给next
时出现错误,则中间件链和路由将停止,并直接跳至错误处理中间件。
错误处理中间件很特殊,因为它有四个参数:err,req,res,next。在内部,express表示检查每个中间件处理程序的arity(参数的数量),如果它有4,它将用作错误处理程序。在这里,您可以使用与其他API相同的样式进行响应。
expressjs guide中有一个示例错误处理程序。