使用expressjs和对象构造函数路由错误

Routing errors with expressjs and object constructors

本文关键字:路由 错误 构造函数 对象 expressjs 使用      更新时间:2023-09-26

我用express和nodejs创建了一个API REST,我在路由的早期阶段。

我的想法是为每条路由创建"控制器",并在路由器文件中调用该控制器,如:

...
router.post('/login', loginCtrl.login(req, res));

在其他项目中,我用一个简单的函数对象来处理它,需要它,然后只是调用该函数。现在我的想法是更有趣的,我正在使用对象构造函数,如:

var ctrl = function() {
   this.login = function(req, res) {
     res.json({ msg: 'hello' }); // just an example
   }
}

我在coffeescript上写这个(客户想要咖啡,所以…),sintax是用元语言,但至少是相同的,我的问题是reqres,这是我的路由器文件:

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将自动传递给该函数