2012-09-12 66 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