#node.js #function #express
Вопрос:
У меня есть этот помощник :
function loginRequired(msg){ // this is the helper
return function(req, res, next){
if (req.user.is_authenticated){ // example
return next()
}
//else
req.flash('error_msg',msg)
return res.redirect('/')
}
}
и у меня есть этот маршрут ( я использую помощника в этом маршруте ) :
router.post('/new', loginRequired(msg='You are not allowed here'), async (req, res)=>{
// code
})
Проблема в том, что функция, возвращаемая помощником, не выполняется, когда я запрашиваю этот маршрут, он продолжает загружаться вечно, а содержимое никогда не отправляется.
Комментарии:
1. Похоже, что нет ничего плохого в функции, возвращающей функцию, и в том, как вы ее используете, поэтому проблема, скорее всего, в другом месте.
Ответ №1:
Очевидно, что с loginRequired()
функцией и тем, как вы ее используете, нет ничего плохого, так что проблема, вероятно, в другом. Единственное, что я вижу, это то, что если req.user
бы его не существовало, то он бы бросил.
Для дальнейшей отладки я бы посоветовал вам сделать это, чтобы убедиться, что ваш маршрут соответствует.
function logRoute(msg) {
return function(req, res, next) {
console.log(msg);
next();
}
}
router.post('/new', logRoute("/new handler"), loginRequired(msg='You are not allowed here'), async (req, res)=>{
// code
});
И убедитесь, что вы видите /new handler
в консоли. Если вы даже этого не видите, то проблема заключается в том, что ваш маршрут объявлен выше по течению, поскольку он не соответствует входящему запросу. Вам придется показать нам остальную часть этого кода, чтобы мы увидели, как используется маршрутизатор.