使用快速路由的回调函数时未定义的参数

时间:2016-07-11 03:04:37

标签: javascript node.js express callback routes

目前,我在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未定义"最后一行的错误。只是想知道我在这里做错了什么?

2 个答案:

答案 0 :(得分:1)

router将函数作为参数,而不是执行该函数的结果。

router.get('/api/comments', testFunction);将有效。

答案 1 :(得分:1)

尝试router.get('/api/comments', function(req, res, next)代替connectionString="Server=localHost;Database=localDatabase;..."