2012-09-12 52 views
2

我在应用程序中使用mongonode.js。 mongo数据库由两台服务器组成。node.js mongodb如何连接到mongo服务器的replicaset

http://howtonode.org/express-mongodb给出的例子,我可以使用连接到一台服务器:

ArticleProvider = function(host, port) { 
var database = 'node-mongo-blog'; 
this.db= new Db(database, new Server(host, port, {auto_reconnect: true}, {})); 
this.db.open(function(){}); 
}; 

但我怎么能连接到多台服务器,在我的情况下,有两台服务器。

回答

3

来自 https://github.com/christkv/node-mongodb-native/blob/master/examples/replSetServersQueries.js的示例代码。

指定的服务器只是种子列表 - 它会自动发现完整列表。副本集的成员不是静态的 - 它们将会更改(可能会添加新的服务器或删除现有的服务器)。客户端连接到输入列表中指定的服务器之一,然后从中获取副本集成员。因此,您不必在此列出所有服务器地址 - 如果列表中提到的服务器中至少有一台已启动并运行,它会自动找到剩余的服务器地址。

var port1 = 27018; 
var port2 = 27019; 
var server = new Server(host, port, {}); 
var server1 = new Server(host, port1, {}); 
var server2 = new Server(host, port2, {}); 
var servers = new Array(); 
servers[0] = server2; 
servers[1] = server1; 
servers[2] = server; 

var replStat = new ReplSetServers(servers); 
console.log("Connecting to " + host + ":" + port); 
console.log("Connecting to " + host1 + ":" + port1); 
console.log("Connecting to " + host2 + ":" + port2); 
var db = new Db('node-mongo-examples', replStat, {native_parser:true}); 
+0

谢谢...它似乎工作...你能说出你的意思吗“指定的服务器只是种子列表 - 它会自动发现完整列表。”? – Tuco

+0

已更新的答案,以澄清这一点。 – gkamal

+0

谢谢..它没有工作! – Tuco