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: * * * * },//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: * * * * }//30 day
, resave: false
, saveUninitialized: true
,store: new MongoStore({
//url: 'mongodb://localhost:27017/blog'
db:settings.db
,host:settings.host
,port:settings.port
})
}));