Nodejs/Mongoose: подключитесь к DB, который использует наборы реплик
-
22-10-2019 - |
Вопрос
Я установил 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"});
Что я здесь делаю не так ...?!
Решение
Хорошо, в https://github.com/christkv/node-mongodb-ination модуль. Сейчас это исправлено, но еще не подтолкнут к 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");
}