如何使用快速中间件充当API响应者?

时间:2014-05-18 02:05:51

标签: express coffeescript middleware

我的路线定义是:

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)被击中,我的响应者将如何知道有错误?

1 个答案:

答案 0 :(得分:2)

如果传递给next时出现错误,则中间件链和路由将停止,并直接跳至错误处理中间件。

错误处理中间件很特殊,因为它有四个参数:err,req,res,next。在内部,express表示检查每个中间件处理程序的arity(参数的数量),如果它有4,它将用作错误处理程序。在这里,您可以使用与其他API相同的样式进行响应。

expressjs guide中有一个示例错误处理程序。