Read from secondary replica set in mongodb through javascript

心已入冬 提交于 2019-12-12 20:44:22

问题


I have 2 mongo instance running in 2 different servers (one primary and other secondary); I am able to retrieve a document from the primary server using this connection code:

var db = mongojs('user:pswd@localhost:27017/mydb?authSource=admin');

But when I try to retrieve a document from the secondary server, I am getting the following error:

{ [MongoError: not master and slaveOk=false]
name: 'MongoError',
message: 'not master and slaveOk=false',
ok: 0,
errmsg: 'not master and slaveOk=false',
code: 13435 }

I also tried using the code:

var db = mongojs('user:pswd@localhost:27017/mydb?authSource=admin&slaveOk=true');

What am I missing?


回答1:


Since you are trying to read from Secondary at DB level. You should specify the readPreferences "secondaryPreferred" in the connection URL for your replica set.

You can refer this document which describes in detail how to do that.

Read Preferences with MongoDB Node.JS Driver

var MongoClient = require('mongodb').MongoClient
  , format = require('util').format;

var url = format("mongodb://%s,%s,%s/%s?replicaSet=%s&readPreference=%s"
  , "localhost:27017",
  , "localhost:27018"
  , "localhost:27019"
  , "exampleDb"
  , "foo"
  , "secondaryPreferred");

MongoClient.connect(url, function(err db) {
  if(!err) {
    console.log("We are connected");
  }
});


来源:https://stackoverflow.com/questions/39769209/read-from-secondary-replica-set-in-mongodb-through-javascript

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!