Pregunta

He instalado MongoDB (1.8.3) en dos servidores separados y configurarlos para usar "conjuntos de réplicas" como se encuentra aquí: http://www.mongodb.org/display/docs/replica+set+tutorial

Todo se ve bien hasta ahora: un servidor se reconoce como primario, uno como secundario (cuando accedo a ellos a través de la línea de comandos).

El problema es que no puedo conectarme al DB usando Node.js (0.4.10) y Mongoose (2.1.0) como este:

var mongo = require('mongoose');
mongo.connectSet('mongodb://host/dbname,mongodb://host2/dbname');

Siempre recibo el siguiente mensaje de error:

TypeError: Cannot read property 'reconnectWait' of undefined
    at new <anonymous> (/var/www/node/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connections/repl_set_servers.js:23:31)
    at NativeConnection.doOpenSet (/var/www/node/node_modules/mongoose/lib/drivers/node-mongodb-native/connection.js:80:18)
    at NativeConnection.openSet (/var/www/node/node_modules/mongoose/lib/connection.js:252:8)
    at Mongoose.connectSet (/var/www/node/node_modules/mongoose/lib/index.js:116:27)
...

Busqué un poco y encontré una publicación en algún lugar diciendo que también tengo que proporcionar el nombre del conjunto de réplicas, así que probé esto: en su lugar: en su lugar:

mongo.connectSet('mongodb://host/dbname,mongodb://host2/dbname', rs_name:"name_replicaset"});

Qué estoy haciendo mal aquí ...?!

¿Fue útil?

Solución

Ok, hubo un error en el https://github.com/christkv/node-mongodb-native módulo. Ahora está arreglado pero aún no se lleva a NPM. Entonces, para todos ustedes reciben el mismo error, aquí está la solución:

https://github.com/christkv/node-mongodb-native/pull/340

Después de eso, puedes decir

var mongo = require('mongoose');
mongo.connectSet('mongodb://host:27018/testdb, host2:27017/testdb, host3:27019/testdb', function (err) {
  if (err) {
    console.log("could not connect to DB: " + err);
  }
});
mongo.connection.on('open', function () {
  console.log("mongodb connection open");
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top