0
我使用express.io ...保存會話變量
在我的路由事件之一,我加載從數據庫中存儲的「票」,再試着設置,對請求的會話:
app.io.route('ready', function(req){
if(req.session.username || req.session.twitter_user){
if(!req.session.username){ //makes the username to store in the session.
req.session.username = 't_' + req.session.twitter_user.screen_name;
}
winston.debug(req.session.username + ' connected'); //redders6600 connected.
db.getVote(req.session.username, function(err, vote){ //gets votes for the user.
if(!err){
req.session.vote = vote[0].vote;
req.io.emit('user data', {username: req.session.username, vote: req.session.vote});
//on the client, I receive this event, and it correctly contains username and vote
}
});
}
});
這一切工作正常,但當我嘗試從另一路由事件訪問會話數據,req.session.vote
是不確定的。 req.session.username
設置正確。
我知道vote[0].vote
絕對不是未定義的,並且在客戶端代碼打印出'用戶數據'事件中的投票數據時進行驗證,所以我對於發生的事情感到非常困惑。最初我認爲它必須與回調函數的上下文有關,但req.io.emit
按預期工作的事實讓我懷疑這一點。
不知道還有什麼要嘗試!任何幫助非常感謝....