2014-10-06 86 views
0

我發現麻煩來設置使用express4.2.0 node.js的一個會議上,我告訴你我的代碼後,我評論:express4.2.0會話未定義


APP.js

var express   = require('express'); 
var path   = require('path'); 
var favicon   = require('static-favicon'); 
var logger   = require('morgan'); 
var cookieParser = require('cookie-parser'); 
var bodyParser  = require('body-parser'); 
var cookieSession = require('cookie-session'); 

var mainModel  = require('./model/main_model'); 

var users   = require('./routes/users'); 

app.set('views', path.join(__dirname, 'views')); 
app.set('view engine', 'jade'); 

app.use(favicon()); 
app.use(logger('dev')); 
app.use(bodyParser.json()); 
app.use(bodyParser.urlencoded()); 
app.use(cookieParser()); 
app.use(express.static(path.join(__dirname, 'public'))); 
app.use(cookieSession({ 
    keys: ['secret1', 'secret2'] 
})); 
app.use('/users', users); 
/*Evething that express makes automatically*/ 
app.listen(8080); 

USERS.js

var express  = require('express'); 
var router  = express.Router(); 

router.get('/', function(req, res) 
{ 
    if(req.cookie && req.cookie.user) res.send("COOKIE"); 
    else if(req.session && req.session.user) res.send("SESSION"); 
    else res.render('users/new_user', {title:"NEW USER"}); 
}); 
/*there is more content... but not relevant. */ 

function makeTheUserSession(result, res) 
{ 
    result['go'] = '/users'; 
    //res.session.user = result.result[0]; 
    //res.cookie('user', result.result[0]); 
    res.send(result); 
} 

函數makeTheUserSession是從'/ users'的方法帖子調用(在數據庫上查找用戶)。

如果我取消註釋res.session.user行,當我invoque makeTheUserSession的應用程序中斷,停止,capito,死亡(不能設置屬性'用戶'的未定義)... 如果我取消註釋res.cookie( 'user',result ... line,當我調用函數時,並且在設置上看到瀏覽器cookie後,我找到一個名爲user的cookie,其值爲result.result [0] ...但是在獲取方法它不起作用我怎麼期望... res不會給我發送「COOKIE」

我曾多次看到過相同的問題,但我沒有看到一個值得我回答的問題:有些人說話關於連接中間件(我使用express),別的說使用「app.use(express.session(關鍵字)),但它只適用於express版本的舊版本。express-ses sion模塊已被棄用,我想使用更實用的中間件。

我希望你的回答。非常感謝你。

回答

1

這是req.session不是res.session,解決這個問題,你應該很好去。

+0

謝謝。我修復它,它的工作原理...非常感謝。 – 2014-10-06 16:25:38