node.js + express + mongoDB jemand hat jemals versucht, das Session -Management von Express mit Replikate -Sets zu verwenden

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

Frage

Ich benutze

  • Knoten 0.4.11
  • Express 2.4.6
  • MongoDB 1.8.3
  • Mongoose 2.1.2
  • connect-mongoDB 1.0.0

und Versuch, Replikate -Sets mit Authentifizierung zu implementieren.

  1. Ich möchte eine andere Art von Anwendungsdaten im DB speichern
  2. Ich möchte Express-Sitzungsdaten im DB speichern

Eine "normale" Verbindung mit Mongoose funktioniert:

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

Aber wie kann das Sitzungsmanagement zum Laufen bringen?!

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

das funktioniert nicht :(

Ist das eigentlich möglich? Oder sollte ich einen anderen MongoDB verwenden, um die Sitzungsdaten zu speichern?

War es hilfreich?

Lösung

Sind Sie sicher, dass Sie Connect-MongoDB und nicht Connect-Mongo verwenden?

Ich sehe nicht, wo diese Parameter mit Connect-MongoDB verwendet werden können.

Geben Sie die Verbindungseinstellungen nicht weiter. Connect-mongoDB kann stattdessen eine direkte DB-Variable annehmen, was eine Instanz von MongoDB.db ist.

Das bedeutet, dass Sie dieselbe Verbindung verwenden können, die Mongoose verwendet, anstatt Connect-mongoDB nur für Sitzungen eine neue Verbindung herzustellen.

Für Mongoose befindet sich die MongoDB.DB -Instanz bei mongoose.connection.db.

Verwenden Sie also Ihren Code als Beispiel (Annahme mongo ist Ihr Mongoose -Objekt):

app.use(express.session({
            cookie: {maxAge: 60000 * 20}, // 20 minutes
            secret: 'foo',
            store: new MongoStore({db: mongo.connection.db})
          }));
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top