Node.js 如何在nodejs中将值从路由器传递到控制器

Node.js 如何在nodejs中将值从路由器传递到控制器,node.js,express,routing,Node.js,Express,Routing,我想将app.locals值传递到控制器函数中。如何在控制器内传递变量 var enroll_controller=require('../enrollController'); router.post('/enroll',function(req,res){ var contractAddress=req.app.locals.contractAddress; enroll_controller.newUser }); 我想通过contract

我想将app.locals值传递到控制器函数中。如何在控制器内传递变量

var enroll_controller=require('../enrollController');
    router.post('/enroll',function(req,res){
        var contractAddress=req.app.locals.contractAddress;
        enroll_controller.newUser
    });
我想通过contractAddress注册\u控制器? 有人吗?

将其作为中间件传递:

router.post('/enroll',enroll_controller.newUser);
在控制器功能中,您可以像这样直接使用它:

exports.newUser=function(req,res){
var contractAddress=req.app.locals.contractAddress
}

您可以编写一个全局中间件,并在该中间件中设置这些值,如果您希望它对每个路由都可用的话

// in your app.js file or main file which is wiring up application
app.use(function(req,res,next){
 req.app.locals.contractAddress = "Set address here."
 next();
});

var enroll_controller=require('../enrollController');
router.post('/enroll',enroll_controller.newUser);
或者,您可以将上述中间件导出到一个路由,并为该特定路由设置地址

    var enroll_controller=require('../enrollController');
    router.post('/enroll',
     function(req,res, next){
        // middleware running to one route only. 
        req.app.locals.contractAddress = 'set address here';        
        next();
     },
     enroll_controller.newUser
    );

您还可以从文件中导出此中间件,然后重用它,而不是每次都将其定义为匿名函数

如果您不想使用中间件,也可以试试这个

var enroll_controller=require('../enrollController');
router.post('/enroll',function(req,res){
    enroll_controller.newUser(req,res);
});
注册Roller.js
exports.newuser=function(req,res){
  var contractAddress=req.app.locals.contractAddress
}