mongodb - Nodejs/ Mongoose : connect to db that's using replica sets

标签 mongodb node.js database-replication mongoose

我已经在两个单独的服务器上安装了 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-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");
}

关于mongodb - Nodejs/ Mongoose : connect to db that's using replica sets,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7300055/

相关文章:

c# - Mongo C# 驱动程序 - 包含过滤器

ruby-on-rails - 联合两个mongo结果

node.js - Node.js项目中javascript函数的程序执行流程

node.js - 从nodeJS自动输入到终端?

javascript - 将 EventEmitter 跨步到调试器中的监听器

redis - 从具有多个数据库的实例复制单个 Redis 数据库

postgresql - 在 Postgres 数据库之间复制数据

node.js - 是否有更好的依赖函数调用方法而不是堆叠它们?

mysql - 命令显示从状态错误 |在windows中找到 "Last_SQL_Error"

c# - 通用列表未插入到 MongoDB 中