node.js – Connect-mongo会话不被自动删除

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

我的问题是,当MongoDB过期时,会话似乎没有被自动删除,所以数据库大小会增加,直到磁盘已满.

connect-mongo wrote a comment的开发者:

connect-mongo will ask MongoDB to remove all the sessions that have
expired before the current date.

但是在我的情况下似乎并没有发生.

我的配置是:

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'));
});

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

> node:0.7.0-pre
> connect-mongo:0.1.7
> express:2.5.2
>连接:1.8.5

解决方法

你没有为你的会话设置一个 clear_interval. connect-mongo认值为-1(或“从不”):

clear_interval Interval in seconds to clear expired sessions (optional,default: -1). Values <= 0 disable expired session clearing.

每小时删除过期会话的示例(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
}));

相关文章

这篇文章主要介绍“基于nodejs的ssh2怎么实现自动化部署”的...
本文小编为大家详细介绍“nodejs怎么实现目录不存在自动创建...
这篇“如何把nodejs数据传到前端”文章的知识点大部分人都不...
本文小编为大家详细介绍“nodejs如何实现定时删除文件”,内...
这篇文章主要讲解了“nodejs安装模块卡住不动怎么解决”,文...
今天小编给大家分享一下如何检测nodejs有没有安装成功的相关...