2017-10-16 100 views
0

我有以下代碼:如何保持req.session的價值快遞會話

var session = require('express-session'); 
var sessionConfig = { 
    secret: 'somesecretkey', 
    cookie: {secure: false}, 
    resave: false, 
    saveUninitialized: false, 
    store: new mongostore({ mongooseConnection: mongoose.connection }) 
} 

router.get('/', function(req, res, next) { 

    var abc = req.session.user; 
    var trueOrFalse = isset(abc); 

    console.log(trueOrFalse); 
    req.session.user = 1; 
    req.session.save(); 
}); 

function isset(var1){ 
    if(typeof var1 !== 'undefined') { 
    return true; 
} 
    return false; 
} 

我的期望的反應是首次打印「假」,然後我刷新頁面後,它會在以下時間總是打印「真」。但是,它始終打印「假」,因爲它不保留該值。

請幫忙。

+0

你怎麼在控制檯中看到,如果你輸出'req.session.user'在這兩個局勢即第一負載和後續加載? –

+0

@MohitBhardwaj無論我重新加載頁面多少次,我總是會爲req.session.user獲取未定義的值。 – Byao

+0

你確定你的'mongoose.connection'工作正常嗎?你可以檢查你的連接數據庫中是否有'sessions'集合? –

回答

0

我不確定,但似乎你沒有添加會話作爲中間件,以便所有傳入的請求通過這個。你也許可以做這樣的事情(在你的主文件通常app.js):

var session = require('express-session'); 
app.use(session({ 
    secret: 'somesecretkey', 
    cookie: {secure: false}, 
    resave: false, 
    saveUninitialized: false, 
    store: new mongostore({ mongooseConnection: mongoose.connection }) 
})); 

// Now here come your route handlers 
app.use("/", routes); 
+0

我已經在我的主文件中。 :( – Byao