Промежуточные программы
должны быть функциями обратного вызова, которые вызывают "next ()" после завершения.Ваша первая функция, когда она выполняется, вызывает next () (в конце концов, после выполнения вашего обещания)
Ваша вторая функция не вызывает next (), она просто возвращает определение функции.
Определите это следующим образом
canModifyTarget: function(req, res, next) {
isAuthenticated(req, res, () => {
if (req.params.id === res.locals.userId) {
return next();
}
return res.status(HttpStatus.FORBIDDEN).send();
})
}
}
, и если третий параметр isAuthenticated является обратным вызовом, он должен работать
Кроме того, вы должны определить случай "else" в вашем isAuthenticated
функция, в противном случае она также будет зависать (может быть, генерировать исключение или что-то в этом роде?)
Если вам нужно ссылаться на них, храните их в переменных, а не непосредственно определяя их в вашем модуле.exports:
const isAuthenticated = function(req, res, next) {
// code here
}
const canModifyTarget: function(req, res, next) {
// code here
}
module.exports = {
isAuthenticated,
canModifyTarget,
};