如何使用快速中间件,参数从路由器链接获取

时间:2017-01-28 18:18:47

标签: node.js express

我想做类似的事情:

function is_member(user_id){
    return function(req, res, next) {
        //do something
    }
}

app.get('/:user_id', is_member(user_id), (req, res, next) => {
    //do something
})

如何归档此内容。做app.get(' /:user_id',is_member(req.params.user_id)无效,我正在做app.params(' user_id')到检查别的东西。

1 个答案:

答案 0 :(得分:0)

中间件必须是一个功能。

当你提供一个中间件并调用它时,这意味着'()',那么它将取代实际函数而不是实际函数来代替中间件,它将不起作用。但是你在这里返回一个功能,所以它必须工作。但问题是您尝试访问params的地方.req.params.user_id在您的实现中不起作用是因为您在不存在的地方访问它。它必须在middelware内部访问,而不是在分配时。所以总是传递函数的“引用”而不要调用它。请参阅以下示例:

function is_member(req, res, next){
   let userId = req.params.user_id;
   // do something with the userId
   // After completing the logic, call next.
   next();
}

app.get('/:user_id', is_member, (req, res, next) => {
    //do something
    // After logic, either call next or send response by res.send();
})