Node.js 如何使用express中间件,参数从路由器链接获取

Node.js 如何使用express中间件,参数从路由器链接获取,node.js,express,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

我想做一些类似的事情:

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')以检查其他内容。

中间件必须是一个函数

当您给出一个中间件并调用它时,这意味着“(),而不是实际的函数,它的返回值将被用来代替中间件,它将不起作用。但这里您返回的是一个函数,因此它必须起作用。但问题是您试图访问参数的位置。req.params.user_id在您的实现中不起作用,因为您在它不存在。它必须在中间件内部访问,而不是在分配过程中访问。因此,始终传递函数的“引用”,不要调用它。请参见下面的示例:

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();
})

@ThuanDucChu如果能够解决您的问题,将其标记为答案将是非常好的谢谢您的通知。我开始使用stackoverflow,因此我很抱歉标记太晚。