nodejs session应用 互动版

存储到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);