2016-09-29 52 views
1

我有2个mongo实例在2个不同的服务器(一个主要和其他辅助)运行;我能够使用此连接代码从主服务器检索文档:通过javascript从MongoDB的辅助副本集读取

var db = mongojs('user:[email protected]:27017/mydb?authSource=admin'); 

但是,当我尝试检索从辅助服务器的文档时,我收到以下错误:

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

我也试过使用代码:

var db = mongojs('user:[email protected]:27017/mydb?authSource=admin&slaveOk=true'); 

我在想什么?

回答

3

由于您试图在数据库级别读取辅助数据。您应该在副本集的连接URL中指定readPreferences“secondaryPreferred”。

你可以参考这个文档,里面详细描述了如何做到这一点。

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"); 
    } 
}); 
+0

谢谢!有效 –