[英]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.