В настоящее время я использую множество маршрутов в Express. Некоторые маршруты могут быть довольно длинными. Общий маршрут выглядит следующим образом:Неопределенный аргумент при использовании функции обратного вызова для экспресс-маршрута
router.get('/api/comments', function(req, res, next){
Comment.find({"user": req.payload._id}).exec(function(err,comments){
if(err){return next(err); }
res.json(comments);
})
}
Это работает нормально. Но я несколько раз вызываю маршруты, и это может быть довольно продолжительным. Поэтому я пытаюсь создать функцию обратного вызова, которая может быть вызвана различными маршрутами. Например.
var testFunction = function(req, res, next){
Comment.find({"user": req.payload._id}).exec(function(err,comments){
if(err){return next(err); }
res.json(comments);
})
}
router.get('/api/comments', testFunction(req,res,next));
Однако в последней строке я всегда получаю ошибку «req is not defined». Просто интересно, что я здесь делаю неправильно?
Это делает работу. Но тогда, если мне нужно передать некоторые аргументы функции, как мне это сделать? – Sydney
@Sydney - используйте '.bind()' для связывания аргументов или использования анонимной функции, которая ничего не делает, вызывая вашу функцию с помощью необходимых аргументов. – jfriend00