我有2个mongo实例在2个不同的服务器上运行(一个主服务器和另一个主服务器);我可以使用以下连接代码从主服务器检索文档:
var db = mongojs('user:pswd@localhost:27017/mydb?authSource=admin');
但是当我尝试从辅助服务器检索文档时,我收到以下错误:
{[MongoError:not master and slaveOk = false]
名称:' MongoError',
消息:' not master and slaveOk = false',
好的:0,
errmsg:' not master and slaveOk = false',
代码:13435}
我也尝试过使用代码:
var db = mongojs('user:pswd@localhost:27017/mydb?authSource=admin&slaveOk=true');
我错过了什么?
答案 0 :(得分:4)
因为您尝试从DB级别读取辅助节点。您应该在副本集的连接URL中指定readPreferences“secondaryPreferred”。
您可以参考此文档,详细说明如何执行此操作。
Read Preferences with MongoDB Node.JS Driver
//this will shuffle values in the array on random positions
shuffle($participants);
//this return the last value from the array and deletes it from the array
$winner = array_pop($participants);
echo "The winner is $winner !\n";
echo "The losers are ".implode(', ',$participants)."\n";
答案 1 :(得分:0)
MongoClient.connect('mongodb:// ip / mongo-primary:27017,ip / mongo-secondary-1:ip / mongo-secondary-2:27017,ip / mongo-secondary-3:27017?readPreference = secondaryPreferred',{useNewUrlParser:true,useUnifiedTopology:true},函数(err,客户端){var db = client.db('viajydb'); db.collection('customers')。findOne({},函数(findErr,结果){如果(findErr)抛出findErr; console.log(result.name); client.close();});});