zoukankan      html  css  js  c++  java
  • Error: Error setting TTL index on collection : sessions

                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
         })
    }));
  • 相关阅读:
    Android :okhttp+Springmvc文件解析器实现android向服务器上传照片
    SpringMVC自定义类型转换器(让jsp支持2018-8-8转化成date类型)
    第一个SpringMVC
    Spring 各功能所用的包(附上网盘下载)
    Spring 基于xml的事务控制
    做一个单纯的react-image显示组件
    CSS Grid 读书笔记
    CSS Modules入门教程
    Taro开发微信小程序的初体验
    教你使用docker部署淘宝rap2服务
  • 原文地址:https://www.cnblogs.com/JamKong/p/5990360.html
Copyright © 2011-2022 走看看