Javascript 在ExpressJS中将变量发送到路由器

Javascript 在ExpressJS中将变量发送到路由器,javascript,node.js,express,Javascript,Node.js,Express,在我的app.js中,我有一些变量,比如 var user = "max"; 和一个路由函数 app.post('/register', user.postRegister); 在my/routes/user.js中,我有这样一个模块函数 exports.postRegister = function(req, res){ // how do get the user variable from here? } 你可以用闭包来完成,就像这样: app.post('/register'

在我的app.js中,我有一些变量,比如

var user = "max";
和一个路由函数

app.post('/register', user.postRegister);
在my/routes/user.js中,我有这样一个模块函数

exports.postRegister = function(req, res){
   // how do get the user variable from here?
}

你可以用闭包来完成,就像这样:

app.post('/register', user.postRegister(user));

exports.postRegister = function(user) {
  return function(req, res){
    // now you have user here
  }
}

创建分部函数,以便将用户名作为第一个参数传递给处理程序:

// app.js
var userName = 'max';
app.post('/register', user.postRegister.bind(user, userName));

// routes/user.js
exports.postRegister = function(userName, req, res) {
  ...
}

如果是这样的话,我认为您希望访问控制器中的用户信息。在这种情况下,最好使用会话

例如:

var setSession = function(req, res, next)
{
  req.session.user = "max";
  //Or get the actual user by querying the database
  next();
}
然后


这取决于……这是一个现实的例子吗?为什么变量(硬编码?)放在第一位?
app.post('/register', setSession, user.postRegister(user));

exports.postRegister = function(req, res){
   var user = req.session.user;
}