2017-04-19 62 views
-1

这是我的app.js代码,我将会话保存在mongoDB中。为什么我不能获得会话的价值?

const cookieParser = require('cookie-parser'); 
    const cookieSession = require('cookie-session'); 
    const session = require('express-session'); 
    const mongoStore = require('connect-mongo')(session); 
    const db = mongoose.connect("mongodb://localhost/course"); 
    app.use(cookieParser()); 
    app.use(cookieSession({ //session 
     secret: "system", 
     store: new mongoStore({ 
      mongooseConnection: db.connection, 
      collection: "sessions" 
    }) 
})) 

当我想得到req.session.user,我得到未定义。 但我保存会话时,用户登录。

exports.fetchCourse = async (req, res) => { 
    console.log("session is: " + req.session.user); 
    if(req.session.user) { 
     const user = await User.findOne({_id: req.session.user._id}).populate("course"); 
     console.log("course are: " + user.course.length); 
     res.status(200).send({ 
      code: 1, 
      data: user.course, 
      msg: "获取全部课程" 
     }) 
    } 
} 

回答

0

您正在使用cookieSession代替expressSsession

根据docs代码应与此类似(如果您使用快递4及以上):

const session = require('express-session'); 
const mongoStore = require('connect-mongo')(session); 
const db = mongoose.connect("mongodb://localhost/course"); 




app.use(session({ 
     secret: "system", 
     store: new mongoStore({ 
      mongooseConnection: db.connection, 
      collection: "sessions" 


}) 
+0

是的,但是当我用快递会话,而不是cookieSession,它仍然不工作。 – gyyin

+0

我发现有两个不同的sessionID。当我发送请求时,sessionID与登录的sessionID不同 – gyyin

相关问题