Error: Error setting TTL index on collection : sessions

本文详细介绍了如何解决在使用MongoDB和connect-mongo时遇到的TTL索引错误问题,包括升级模块版本和正确配置session中间件的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

            Error: Error setting TTL index on collection : sessions

一、步骤一:

这个问题一般是直接升级 mongodbconnect-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
     })
}));

 

转载于:https://www.cnblogs.com/JamKong/p/5990360.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值