我想做类似的事情:
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')到检查别的东西。
答案 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();
})