2017-10-16 101 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