質問

Mongodb(1.8.3)を2つの別々のサーバーにインストールし、ここにあるように「レプリカセット」を使用するように設定しました。 http://www.mongodb.org/display/docs/replica+set+tutorial

これまでのところすべてが良く見えます。1つのサーバーはプライマリとして認識され、1つはセカンダリとして認識されます(コマンドラインでアクセスするとき)。

問題は、Node.js(0.4.10)とMongoose(2.1.0)を使用してDBに接続できないことです。

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-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");
}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top