node.js + express + mongodb誰もがレプリカセットでExpressのセッション管理を使用しようとしたことがあります
質問
私は使用しています
- ノード0.4.11
- Express 2.4.6
- Mongodb 1.8.3
- マングース2.1.2
- Connect-MongoDB 1.0.0
認証でレプリカセットを実装しようとしています。
- さまざまな種類のアプリケーションデータをDBに保存したい
- DBにExpressのセッションデータを保存したい
Mongooseとの「通常の」接続が機能しています。
mongo.connectSet('mongodb://user:secret@host:27017/test,
mongodb://host:27018,
mongodb://host:27019,
mongodb://host:27020', function (err) {
if (err) {
console.log("could not connect to DB: " + err);
}
});
しかし、どのようにしてセッション管理を機能させることができますか?!
app.use(express.session({
cookie: {maxAge: 60000 * 20}, // 20 minutes
secret: 'foo',
store: new MongoStore({
host: 'host',
port: [27017, 27018, 27019, 27020],
dbname: 'test',
rs_name: 'rstest',
username: 'user',
password: 'secret'
})
}));
これは機能していません:(
これは実際に可能ですか?または、セッションデータを保存するために別のMongoDBを使用する必要がありますか?
解決
Connect-Mongodbを使用していて、Connect-Mongoではありませんか?
Connect-MongoDBでこれらのパラメーターをどこで使用できるかはわかりません。
接続設定に渡さないでください。 Connect-MongoDBは、代わりに直接DB変数を取得できます。これはMongodb.dbのインスタンスです。
つまり、Mongooseが使用するのと同じ接続を使用して、Connect-MongoDBにセッションのためだけに新しい接続を作成するのではなく、使用できます。
mongooseの場合、mongodb.dbインスタンスはmongoose.connection.dbで見つけることができます。
したがって、コードを例として使用します(仮定します mongo
あなたのマングースオブジェクトですか):
app.use(express.session({
cookie: {maxAge: 60000 * 20}, // 20 minutes
secret: 'foo',
store: new MongoStore({db: mongo.connection.db})
}));
所属していません StackOverflow