Javascript expressjs和对象构造函数的路由错误

Javascript expressjs和对象构造函数的路由错误,javascript,node.js,rest,express,coffeescript,Javascript,Node.js,Rest,Express,Coffeescript,我正在使用express和nodejs创建一个API REST,并在我的路由的早期阶段使用Im 我的想法是为每个分离的路由创建“控制器”,并在路由器文件中调用该控制器,如: ... router.post('/login', loginCtrl.login(req, res)); 在另一个项目中,我用一个简单的函数对象来处理它,需要它,然后调用那个函数。现在我的想法更有趣了,我正在使用对象构造函数,比如: var ctrl = function() { this.login = func

我正在使用express和nodejs创建一个API REST,并在我的路由的早期阶段使用Im

我的想法是为每个分离的路由创建“控制器”,并在路由器文件中调用该控制器,如:

...
router.post('/login', loginCtrl.login(req, res));
在另一个项目中,我用一个简单的函数对象来处理它,需要它,然后调用那个函数。现在我的想法更有趣了,我正在使用对象构造函数,比如:

var ctrl = function() {
   this.login = function(req, res) {
     res.json({ msg: 'hello' }); // just an example
   }
}
我在coffeescript上写这篇文章(客户想要咖啡,所以…),sintax使用了该元语言,但至少是相同的,我的问题是
req
res
,这是我的路由器文件:

express = require 'express'
router = express.Router()

###
  Rutas de autenticación
###
AuthController = require '../controllers/authenticate'
auth = new AuthController()

router.post '/setup'   , auth.setup req, res
router.post '/register', auth.register req, res
router.post '/login'   , auth.login req, res

module.exports = router
当服务器运行时,它向我抛出以下错误:

/home/nano/Dev/erp-api/app/routes/apiroutes.coffee:17
  router.post('/setup', auth.setup(req, res));
                                   ^
ReferenceError: req is not defined

这到底是为什么?我不知道,当我使用普通对象时,它可以工作。

就像您使用变量调用函数设置一样,而您想要的是将引用传递给函数。因此,您必须将引用传递给它,而不是执行它

router.post '/setup'   , auth.setup
req、res将自动传递给该函数