因为用 pm2 启动 node, cluster 模式启动4个进程, session 不能共享。为了解决这个问题,把 session 存到数据库里。有两个比较好的选择,一个是 redis(没用过,过几天试试),另一个是 mongodb,mongodb 最好是运行在 in memory 引擎下,把数据存在内存中,可以比较快。但是查了社区版没有这个功能。
connect-mongo 地址
根据本地开发还是服务器上选择不同的 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()
网友评论