存储到mongodb数据库
在上一章中完成的示例中我们尝试一下:登录后,重新启动node app,然后刷新访问测试页面。我们会发现session丢了! 这是因为session会默认的存储到内存当中。也就是说session数据都是存储在内存当中的,当进程退出后,session数据就会丢失。
在开发环境中,这也许并不算什么坏事。但是如果线上的应用是这样的,用户绝对是不能忍受的。这也就引出了本章节要讲解的内容:将session数据 持久化存储。
首先我们讲解如何把session存储到mongodb数据库当中:
在使用mongodb存储时首先要加载一个模块:connect-mongo
安装命令:npm install connect-mongo
使用代码:
var session = require('express-session');
var MongoStore = require('connect-mongo/es5')(session);
mongoose.connect('mongodb://127.0.0.1:27017/hubwiz'); //连接数据库
mongoose.connection.on('open', function () {
console.log('-----------数据库连接成功!------------');
});
app.use(session({
secret: "what do you want to do?", //secret的值建议使用128个随机字符串
cookie: {maxAge: 60 * 1000 * 60 * 24 * 14}, //过期时间
resave: true, // 即使 session 没有被修改,也保存 session 值,默认为 true
saveUninitialized: true,
store: new MongoStore({
mongooseConnection: mongoose.connection //使用已有的数据库连接
})
}));
app.listen(80);