用 connect-mongo 把 session 存到 mongodb 中

因为用 pm2 启动 node, cluster 模式启动4个进程, session 不能共享。为了解决这个问题,把 session 存到数据库里。有两个比较好的选择,一个是 redis(没用过,过几天试试),另一个是 mongodb,mongodb 最好是运行在 in memory 引擎下,把数据存在内存中,可以比较快。但是查了社区版没有这个功能。

connect-mongo 地址

github 地址

根据本地开发还是服务器上选择不同的 session 存储位置

if (process.env.NODE_ENV === 'production') {
        app.use(session({
            secret: 'myweb',
            name: 'lsx',
            cookie: {
                maxAge: 1800000
            },
            resave: false,
            saveUninitialized: true,
            store: new MongoStore({url:'mongodb://localhost/my_web_session'})
        }))
} else {    
    app.use(session({
        secret: 'myweb',
        name: 'lsx',
        cookie: {
            maxAge: 1800000
        },
        resave: false,
        saveUninitialized: true,
    }));
}

并不需要在 mongodb 中自己手动建立 my_web_session, connect-mongo 会自动创建。

查看 mongodb 中的 session

mongo
show dbs
use my_web_session
show collections
db.session.find()

你可能感兴趣的:(用 connect-mongo 把 session 存到 mongodb 中)