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
您没有为会话设置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 }));