現在、セッション データを connect(express) にバンドルされている「メモリ ストア」に保存しています。ただし、本番環境ではこれを変更する必要があります。
アプリケーションは mongodb を使用しており、すべての db 通信を処理するために mongoose をインストールしました。
例: アプリを初期化した後に DB に接続します。
var mongo = require('mongoose');
mongo.connect('mongodb://localhost/myDb');
mongo.connection.on('open', function () {
app.listen(3000);
}
connect-mongodb モジュールを見つけましたが、mongoose を使用して実装する方法や、実際に可能かどうかがわかりません。次のような内容を追加する必要があります。
var mongoStore = require('connect-mongodb');
// ...
app.use(express.session({
secret: 'topsecret',
maxAge: new Date(Date.now() + 3600000),
store: new mongoStore({ db: 'myDb' })
}));
または、mongodb モジュールを直接使用して、DB 接続をもう一度定義する必要がありますか?
ベストアンサー1
結局、私は以前に与えられたすべての回答を少しずつ使っています:
- connect-mongodbからconnect-mongoモジュールに切り替えました
- 一般的なconfオブジェクトを使用して設定データを保存しています
- 私にとって扱いやすいように、2 つの DB 接続があります (mongoose/express の新しいバージョンがリリースされた場合は後で変更される可能性があります)
要件:
var express = require('express'),
MongoStore = require('connect-mongo')(express),
mongo = require('mongoose');
confオブジェクト:
var conf = {
db: {
db: 'myDb',
host: '192.168.1.111',
port: 6646, // optional, default: 27017
username: 'admin', // optional
password: 'secret', // optional
collection: 'mySessions' // optional, default: sessions
},
secret: '076ee61d63aa10a125ea872411e433b9'
};
次のように設定できます:
app.configure(function(){
// ...
app.use(express.cookieParser());
app.use(express.session({
secret: conf.secret,
maxAge: new Date(Date.now() + 3600000),
store: new MongoStore(conf.db)
}));
// important that this comes after session management
app.use(app.router);
// ...
});
最後に、mongoose を使用して mongodb にもう一度接続します。
var dbUrl = 'mongodb://';
dbUrl += conf.db.username + ':' + conf.db.password + '@';
dbUrl += conf.db.host + ':' + conf.db.port;
dbUrl += '/' + conf.db.db;
mongo.connect(dbUrl);
mongo.connection.on('open', function () {
app.listen(3000);
});