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
         })
    }));
  • 相关阅读:
    线程中更新ui方法汇总
    Chromium Embedded Framework
    adb提取安装的apk
    下拉列表 Spinner
    更改activity切换方式
    左右页面滑动
    静态成员函数(面向对象的static关键字)
    静态数据成员(面向对象的static关键字)
    静态函数(面向过程的static关键字)
    静态局部变量(面向过程的static关键字)
  • 原文地址:https://www.cnblogs.com/JamKong/p/5990360.html
Copyright © 2011-2022 走看看