MongoStore를 사용중인데 세션을 다시 불러오려면 어떻게 해야 하나요?

조회수 1671회

DB도 몽고DB, 세션도 MongoStore를 쓰고 있습니다. 일단 사용자 정보가 몽고DB에 저장되고, 로그인시 passport를 통해서 세션화합니다.
사용자 정보를 갱신하려고 몽고DB를 업데이트 하는데까지는 문제가 없는데 세션은 새로 로그인을 하지 않으면 변경이 안됩니다.

app.use(session({
    cookie: {
        maxAge:30 * 60 * 1000,
        expires: 30* 60 * 1000,
        httpOnly: true
    },
    rolling: true,
    resave: true,
    saveUninitialized: true,
    secret: '~~~',
    store: new MongoStore({
        mongooseConnection: mongoose.connection
    })
}));

app.use(function(req, res, next){
    res.locals.userSession = req.user;
    next();
});

var passport = require('./config/passport');
app.use(passport.initialize());
app.use(passport.session());

세션 설정은 이렇고요 라우터에서는 이렇게 하고 있습니다.

var v1 = req.body.v1,
    v2 = req.body.v2;

User.findOne({'_id': req.user._id}, function(err, user){
    if(err){
        res.json({errMsg:err});
    }else{
        user.v1 = v1,
        user.v2 = v2;
        user.save();
        req.session.save();
        res.json({success: 1});
    }
});

req.session.save(), req.session.reload(), req.session.regenerate() 등등 다 해봤는데 save는 아무 반응도 없고 reload나 regenerate는 async 모듈에서 오류를 일으킵니다.

~/node_modules/connect-mongo/node_modules/bluebird/js/release/async.js:48
        fn = function () { throw arg; };
                           ^

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)