简体   繁体   English

将路由参数传递给ExpressJS中的控制器

[英]Pass route parameter to controller in ExpressJS

I'm using passport JS to authenticate my user account. 我正在使用护照JS来验证我的用户帐户。 Passing the passport variable from app.js to routes.js and controller.js. 从app.js将password变量传递给routes.js和controller.js。 When I pass between routes.js and controller.js, I have no idea how to implement. 当我在route.js和controller.js之间传递时,我不知道如何实现。 I tried different approaches but didn't work. 我尝试了不同的方法,但是没有用。 My first priority was stored all the implementation codes inside controller instead of routes. 我的首要任务是将所有实现代码存储在控制器内部,而不是路由。

App.js App.js

var userRouter = require('./api/routes/userRoutes.js')(app,passport);

Routes.js Routes.js

module.exports = function(app,passport){
  var UserRouter = express.Router();
  users = require('./../controllers/UserController')
  UserRouter.post('/users', users.authenticate);
}

Controller.js Controller.js

exports.authenticate = function(req, res, next){
    // How do I get passport variable here?
}

Not sure that it is the best way in this case, but like an option you can try this: 不确定在这种情况下这是最好的方法,但是像一个选项一样,您可以尝试以下操作:

In App.js: 在App.js中:

global. passport = passport;
var userRouter = require('./api/routes/userRoutes.js')(app, passport);

In Controller.js: 在Controller.js中:

exports.authenticate = function(req, res, next) {
    console.log(global.passport);
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM