2013-10-04 109 views
2

在我app.js,我有這樣發送變量路由器ExpressJS

var user = "max"; 

一些變量和路由功能

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

,在我/routes/user.js我有一個這樣

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

這取決於...這是一個現實的例子嗎?爲什麼那裏的變量(硬編碼?)在第一位? – Prinzhorn

回答

4

模塊的功能你可以用封閉做到這一點,就像這樣:

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

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

創建的部分功能,使用戶名將會作爲第一個參數傳遞到您的處理:

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

// routes/user.js 
exports.postRegister = function(userName, req, res) { 
    ... 
} 
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; 
}