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

时间:2013-10-04 16:25:14

标签: javascript node.js express

在我的app.js中,我有一些像

这样的变量
var user = "max";

和路线功能

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

在我的/routes/user.js中我有一个像这样的模块函数

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

3 个答案:

答案 0 :(得分:4)

你可以用一个闭包来做,如下:

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

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

答案 1 :(得分:0)

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

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

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

答案 2 :(得分:0)

我想你想要访问控制器中的用户信息,如果是这样的话。在这种情况下,最好使用会话。

示例:

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;
}