Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 对快速路由使用回调函数时未定义的参数_Javascript_Node.js_Express_Callback_Routes - Fatal编程技术网

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

Javascript 对快速路由使用回调函数时未定义的参数,javascript,node.js,express,callback,routes,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); }) } 这个很好用。但我给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);
  })
}
这个很好用。但我给routes打了多次电话,可能会很长时间。因此,我试图创建一个回调函数,它可以被各种路由调用。例如

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未定义”错误。只是想知道我做错了什么?

路由器将函数作为参数,而不是执行该函数的结果


router.get('/api/comments',testFunction)将起作用。

尝试执行
router.get('/api/comments',testFunction)
而不是
router.get('/api/comments',function(req,res,next)

它确实可以工作。但是如果我需要向函数传递一些参数,我该怎么做呢?@Sydney-可以使用
.bind()
绑定参数,或者使用匿名函数,通过使用所需的参数调用函数而不做任何事情。