nodejs / mongoose:连接到使用副本集的数据库

我已经在两台独立的服务器上安装了mongodb(1.8.3),并将它们设置为使用在这里find的“副本集”: 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) ... 

search了一下,发现了一个post,说我还必须提供副本集的名称 – 所以我试着这个,而不是:

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