MongoDB副本集用node.js写入

时间:2015-09-18 07:14:17

标签: javascript node.js mongodb node-mongodb-native

我使用node.js的mongodb本机驱动程序连接到3个节点(PRIMARY和2个SECONDARIES)的副本集,如下所述:http://mongodb.github.io/node-mongodb-native/2.0/api/MongoClient.html

 var MongoClient = require("mongodb").MongoClient;     

 var url = "mongodb://admin:pass@hostname:27017";
 var options = {
  db: {
    readPreference: 'primaryPreferred',
    slaveOk: true
  },
  replSet: {
    replicaSet: 'rs0'
  },
  server: {
    w: 1,
    autoReconnect: true
  };

 MongoClient.connect(url, options);

请注意slaveOk: true没有记录,没有它我一直得到slaveOk是错误的错误。 我一直在写Potentially unhandled rejection [83] MongoError: not master。 你能帮忙连接到节点应用程序的副本集吗?也许我会指定连接的所有服务器?但它在文档中说,当PRIMARY发生变化时,驱动程序足够聪明,可以重新连接。

1 个答案:

答案 0 :(得分:2)

为了允许客户端根据需要在副本集成员之间切换,您需要告诉它存在这些备用副本集成员。为此,请提供以逗号分隔的所有副本集成员的URL。

var url = "mongodb://admin:pass@hostname1:27017,mongodb://admin:pass@hostname2:27017,mongodb://admin:pass@hostname3:27017,";

如果要从应用程序抽象副本集配置以获得更大的灵活性,可以构建分片群集并让应用程序连接到路由器。然后,路由器将负责将连接转发到适当的副本集成员