Node.js + Express + MongoDB Cualquiera que haya intentado usar la administración de la sesión de Express con conjuntos de réplicas

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

Pregunta

Estoy usando

  • nodo 0.4.11
  • Express 2.4.6
  • MongoDB 1.8.3
  • Mongosa 2.1.2
  • Connect-MongoDB 1.0.0

e intentar implementar conjuntos de réplicas con autenticación.

  1. Quiero almacenar diferentes tipos de datos de aplicaciones en el DB
  2. Quiero almacenar los datos de la sesión de Express en el DB

Una conexión "normal" con la mangosta está funcionando:

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

Pero, ¿cómo puede hacer que la gestión de la sesión funcione?

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

esto no está funcionando :(

¿Es esto realmente posible? ¿O debería usar un MongoDB diferente para almacenar los datos de la sesión?

¿Fue útil?

Solución

¿Estás seguro de que estás usando Connect-MongoDB y no Connect-Mongo?

No veo dónde se pueden usar esos parámetros con Connect-MongoDB.

No pases en la configuración de conexión. Connect-MongoDB puede tomar una variable DB directa en su lugar, que es una instancia de MongoDB.DB.

Eso significa que puede usar la misma conexión que usa Mongoose, en lugar de hacer que Connect-MongoDB cree una nueva conexión solo para sesiones.

Para Mongoose, la instancia de MongoDB.DB se puede encontrar en Mongoose.Connection.DB.

Entonces, usar su código como ejemplo (suponiendo mongo es tu objeto de mangosta):

app.use(express.session({
            cookie: {maxAge: 60000 * 20}, // 20 minutes
            secret: 'foo',
            store: new MongoStore({db: mongo.connection.db})
          }));
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top