簡體   English   中英

如何在nodejs mongodb驅動程序中使用mongoclient設置read Preference secondary?

[英]how to set read Preference secondary using mongoclient in nodejs mongodb driver?

我正在使用mongodb副本集。 我有以下配置:

{
"members": [
      {
        "host": "db1.example.com",
        "port": "27017"
      },
      {
        "host": "db2.example.com",
        "port": "27017"            
      }
    ]    
}

我使用以下nodejs代碼連接db name myapplicationDb:

使用mongodb驅動程序版本1.4.38。

var MongoClient = require('mongodb').MongoClient;
var Server = require('mongodb').Server;

var url = 'mongodb://';
    var options = {
        server: {
            slaveOk: true,
            readPreference: Server.READ_SECONDARY,
            socketOptions: {"connectTimeoutMS": 30000}
        },
        db: {
            readPreference: Server.READ_SECONDARY
        },
        replSet: {
            rs_name: "replicaName",
            readPreference: Server.READ_SECONDARY
        }
    }
    members.forEach(function (member) {
        url = url + member.host + ':' + member.port + ','
    });
    url = url.substring(0, url.length - 1);
    url += '/' + "myapplicationDb";
    MongoClient.connect(url, options, function (err, db) {

   console.log("db >>>>>>>>", db);

});

我想設置read Preference secondary。

但是所有讀取操作都在主數據庫上執行。 怎么設置呢?

這段代碼解決了我的問題:

var MongoClient = require('mongodb').MongoClient;
var Server = require('mongodb').Server;

var url = 'mongodb://';
var options = {
    //server: {
    //    slaveOk: true,
    //    readPreference: Server.READ_SECONDARY,
    //    socketOptions: {"connectTimeoutMS": 30000}
    //},
    //db: {
    //    readPreference: Server.READ_SECONDARY
    //},
    //replSet: {
    //    rs_name: "replicaName",
    //    readPreference: Server.READ_SECONDARY
    //}
}
members.forEach(function (member) {
    url = url + member.host + ':' + member.port + ','
});
url = url.substring(0, url.length - 1);
url += '/' + "myapplicationDb";
url = url + "?replicaSet=replicaName&readPreference=secondaryPreferred&connectTimeoutMS=30000"
MongoClient.connect(url, options, function (err, db) {

    console.log("db >>>>>>>>", db);

});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM