Connect-mongo会话不会被自动删除

我有一个使用NodeJS,Express,MongoDB和connect-mongo的应用程序。

我的问题是,会话过期似乎不会自动从MongoDB中删除,所以数据库大小增长,直到磁盘已满。

connect-mongo的开发者写了一条评论 :

connect-mongo会要求MongoDB删除在当前date之前过期的所有会话。

但是,这似乎并没有发生在我的情况。

我的configuration是:

var express = require('express'); var MongoStore = require('connect-mongo'); var sessionStore = new MongoStore({db: 'myappsession'}); var app = express.createServer(); app.configure(function(){ app.set('views', __dirname + '/views'); app.set('view engine', 'ejs'); app.use(express.bodyParser()); app.use(express.methodOverride()); app.use(express.cookieParser()); app.use(express.session({ secret: "myappsecret", store:sessionStore })); app.use(app.router); app.use(express.static(__dirname + '/public')); }); 

而我目前正在运行以下版本:

  • 节点: 0.7.0-pre
  • connect-mongo: 0.1.7
  • 表示: 2.5.2
  • 连接 1.8.5

       

网上收集的解决方案 "Connect-mongo会话不会被自动删除"

您没有为会话设置clear_interval -mongo默认值为-1(或“never”):

clear_interval以秒为单位的时间间隔,用于清除过期的会话(可选,默认值: -1 )。 值<= 0禁用过期的会话清除。

每小时(3600s)删除过期会话的示例:

 var sessionStore = new MongoStore({ db: 'myappsession', clear_interval: 3600 }); 

你也应该确保你已经设置了一个maxAge到他们的会话实际到期(例如使用1天):

 app.use(express.session({ secret: "myappsecret", cookie: { maxAge: 24 * 60 * 60 * 1000 }, store:sessionStore }));