2015-04-08 19 views
3

我在尋找sessionstore生產應用程序,因爲我有錯誤消息:最佳會話存儲中間件快遞+ PostgreSQL的

警告:connect.session()MemoryStore的不是專爲 生產環境,這將導致內存泄漏,並不會規模 過去單一的過程

我的代碼:

var express    = require('express'); 
var ECT     = require('ect'); 
var cookieParser   = require('cookie-parser'); 
var compress    = require('compression'); 
var session    = require('express-session'); 
var bodyParser   = require('body-parser'); 
var _     = require('lodash'); 
var passport    = require('passport'); 
var expressValidator  = require('express-validator'); 
var connectAssets  = require('connect-assets'); 

app.use(bodyParser.json()); 
app.use(bodyParser.urlencoded({ extended: true })); 
app.use(expressValidator()); 
app.use(methodOverride()); 
app.use(cookieParser()); 
app.use(session({ 
    resave: true, 
    saveUninitialized: true, 
    secret: secrets.sessionSecret, 
})); 
app.use(passport.initialize()); 
app.use(passport.session()); 

var app = module.exports = express(); 
var server = require('http').Server(app); 
var io = require('socket.io')(server); 

server.listen(app.get('port'), function() { 
    console.log('Express server listening on port %d in %s mode', app.get('port'), app.get('env')); 
}); 

module.exports = app; 

我不知道什麼是我的生產應用程序的最佳解決方案。我使用PostgreSQL作爲ORM使用了sequelize。 我會非常感激任何意見。

回答

-2

如果你只是存儲會話,你可以使用redis或者如果你想持久化可能使用mongoDB。

+0

我不想使用另一個數據庫....在PostgreSQL中存儲會話是不好主意?我看到在postgres的商店會話通常是個壞主意...... – Makromat

+0

這取決於。會話的生命週期有限,所以redis可以用TTL來處理這個事件,並自動刪除過期的舊會話。但是如果你想存儲和保存所有的會話,PostGreSQL可能是不錯的選擇。 – Sachacr

3

我知道它與connect-pg-simple一起工作。

使用提供的table.sql創建會話表,並傳入連接字符串或對象。