node.js + express + mongodb誰もがレプリカセットでExpressのセッション管理を使用しようとしたことがあります

StackOverflow https://stackoverflow.com/questions/7351318

質問

私は使用しています

  • ノード0.4.11
  • Express 2.4.6
  • Mongodb 1.8.3
  • マングース2.1.2
  • Connect-MongoDB 1.0.0

認証でレプリカセットを実装しようとしています。

  1. さまざまな種類のアプリケーションデータをDBに保存したい
  2. 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})
          }));
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top