2013-03-19 32 views
4

我嘗試使用Express.io轉發路由,但它不起作用,我在Github上閱讀了文檔,並且完全按照他們的說法進行了操作。我不知道哪裏是問題...使用Express.io路由轉發

app.post('/signin', function(req, res) { 
    me.pseudo = req.body.pseudo; 
    me.email = req.body.email; 
    me.gravatar = "http://www.gravatar.com/avatar/" + md5(me.email) + "?s=140"; 
    users.push(me); 
    req.io.route('hello'); //error here 
}); 

app.io.route('hello', function(req) { 
    console.log('Done !'); 
}); 

錯誤:

TypeError: Cannot call method 'route' of undefined 
    at /Users/anthonycluse/Sites/Tchat-Express/app.js:78:12 
+0

我會做的app.io和req.io一個的console.log開始看到(如果存在)你也期待他們。第78行是什麼? – Adam 2014-03-04 06:20:05

+1

也可以'util = require(「util」);'在頂部並執行'console.log(util.inspect(req));'app.post內部。它應該顯示'req'對象的成員和屬性。哪個應該給予很好的見解。顯然在錯誤的上方。 – Adam 2014-03-04 06:21:51

回答

0

我不能app.io說話,但通常當你需要的路線之間共享相同的功能,你要麼
a)作出的錯誤處理一個單獨的函數,並從多個路由調用它:

function handleError(req, res) { 
    //handle error 
} 

app.post('/foo', function(req, res) { 
    //if conditions are met, else 
    handleError(req, res); 
}); 

二)抽象進一步通過製作模塊:

//user.js 
module.exports = { 
    signin: function(req, res) {}, 
    signinError: function(req, res) {}, 
}; 

路由代碼

//routes.js 
var user = require('../modules/user'); 

app.post('/signin', function(req, res) { 
    //validate signin 
    //else 
    user.signinError(req, res); 
}); 

app.post('/signin-no-error', user.signin);