Error: Error setting TTL index on collection : sessions
一、步骤一:
这个问题一般是直接升级 mongodb
和connect-mongo
的版本为最新就可以了。
(注:记得一定要删除掉node_module再重新安装,因为你在package.json中对引用的模块进行改变版本号,也不会更新的,需要删除掉后再重新下载安装,自己就是在这步坑了~~ - -!)
二、步骤二:
如果上面的步骤无法解决问题,那么就进行该步骤:
检查express 配置session中间件的时候,是否配置正确。
因为自己就是因为配置不正确才导致报错的,我当时是在配置session的时候,加了点要求,需要将session信息保存到mongo数据库中去,而不是只是保存在内存中。正是因为配置要将session信息保存到数据库中去的配置错了。
如果不需要保存session信息到mongo数据库中,而只是存储在内存中的话,那么可以照API上的配置进行配置:
var session = require('express-session'); ..... /** * secret 用来防止篡改 cookie, * key 的值为 cookie 的名字, * 通过设置 cookie 的 maxAge 值设定 cookie 的生存期, * 这里我们设置 cookie 的生存期为 30 天. * resave : 是指每次请求都重新设置session cookie,假设你的cookie是10分钟过期,每次请求都会再设置10分钟 * saveUnitialized 是指无论有没有session cookie,每次请求都设置个session cookie,默认给个标识为connect.sid
*/ app.use(session({ secret: 'myblog', key: 'blog', cookie: {maxAge: 1000 * 60 * 60 * 24 * 30},//30 day resave:false, saveUninitialized: true }));
如果需要存储到mongo数据库中去,那么可以按照下面的方法进行配置:
因为我们在这里使用的 connect-mongo
来保存session信息到mongo数据库中去的。
所以,我们可以参考: https://www.npmjs.com/package/connect-mongo
app.use(session({ secret: settings.cookieSecret , key: settings.db , cookie: {maxAge: 1000 * 60 * 60 * 24 * 30}//30 day , resave: false , saveUninitialized: true ,store: new MongoStore({ //url: 'mongodb://localhost:27017/blog' db:settings.db ,host:settings.host ,port:settings.port }) }));