nodejs / mongoose: подключиться к БД, использующей наборы реплик - PullRequest
1 голос
/ 04 сентября 2011

Я установил mongodb (1.8.3) на двух отдельных серверах и настроил их на использование «наборов реплик», как показано здесь: http://www.mongodb.org/display/DOCS/Replica+Set+Tutorial

пока все выглядит хорошо: один сервер распознается какпервичный, второй как вторичный (когда я получаю к ним доступ через командную строку).

проблема в том, что я не могу подключиться к БД, используя node.js (0.4.10) и mongoose (2.1.0), как это:

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

я всегда получаю следующее сообщение об ошибке:

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)
...

немного обыскал и где-то нашел пост, в котором говорится, что я также должен предоставить имя набора реплик -поэтому я попробовал это вместо этого:

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

что я здесь не так делаю ...?!

1 Ответ

6 голосов
/ 07 сентября 2011

хорошо, в модуле https://github.com/christkv/node-mongodb-native произошла ошибка.это исправлено, но еще не передано в NPM.Итак, для всех вас, ребята, одна и та же ошибка, вот исправление:

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

после этого вы можете просто сказать

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");
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...