使用控制器的方法作为端点和中间件

时间:2015-04-01 22:32:05

标签: node.js express middleware endpoint

以下是两个简单的场景:

  1. 使用user获取id并返回
  2. 使用user获取id,执行其他操作,然后返回
  3. 我想将方案2实现为

    router.post('/api/users/:id/someStuff', controller.getUser, controller.doStuff)
    

    但是方案1应该实现为

    router.post('/api/users/:id/someStuff', controller.getUser)
    

    基本上,controller.getUser既是中间件又是端点。我该如何做到这一点?如果我在res.son()内使用getUser,然后在doStuff内重复使用{},那么我会收到错误。

1 个答案:

答案 0 :(得分:0)

我会将此作为app.param的{​​{1}}处理程序实现并命名我的param(在明文档中有一个例子)。然后对于场景1,路由处理程序将只执行:userId,并且场景2将预加载res.json(req.user);,以便在发送用户之前执行其需要执行的任何其他操作。如果“发送用户”实际上只是req.user,那么它就不足以将其分解为自己的中间件,但如果它最终成长为代码片段,则可以将其分解为中间件或辅助函数。