Node.js + Express + MongoDB Chiunque abbia mai provato a utilizzare la gestione della sessione di Express con set di replica

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

Domanda

sto usando

  • Nodo 0.4.11
  • Express 2.4.6
  • MongoDB 1.8.3
  • Mongoose 2.1.2
  • Connect-MongoDB 1.0.0

e cercando di implementare set di repliche con autenticazione.

  1. Voglio archiviare diversi tipi di dati applicativi nel DB
  2. Voglio archiviare i dati di sessione di Express nel DB

Una connessione "normale" con Mongoose funziona:

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

Ma come può far funzionare la direzione della sessione?!

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

Questo non funziona :(

È davvero possibile? O dovrei usare un MongoDB diverso per la memorizzazione dei dati della sessione?

È stato utile?

Soluzione

Sei sicuro di utilizzare Connect-MongoDB e non Connect-Mongo?

Non vedo dove possano essere utilizzati quei parametri con Connect-Mongodb.

Non passare nelle impostazioni di connessione. Connect-MongoDB può invece assumere una variabile DB diretta, che è un'istanza di MongoDB.DB.

Ciò significa che è possibile utilizzare la stessa connessione utilizzata da Mongoose, invece di avere Connect-MongoDB creare una nuova connessione solo per le sessioni.

Per Mongoose, l'istanza MongoDB.DB è disponibile su Mongoose.connection.db.

Quindi, usando il tuo codice come esempio (supponendo mongo è il tuo oggetto mongoose):

app.use(express.session({
            cookie: {maxAge: 60000 * 20}, // 20 minutes
            secret: 'foo',
            store: new MongoStore({db: mongo.connection.db})
          }));
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top