奇怪的mongodb和mongoose错误:不是master和slaveOk = false错误

Mon*_*key 31 mongoose mongodb mongohq

我的node.js应用程序中出现了一个奇怪的错误

not master and slaveOk=false code 13435

我正在使用mongoose 4.0.2点击mongodb 3.0.1进行findOne查询.该查询今天早些时候正在运行.

这个错误是什么?我正在按照他们的标准每gb计划运行mongohq.

Noc*_*rno 37

这意味着您尝试从副本集中的辅助节点读取,默认情况下只能从主节点读取.

您可以通过rs.slaveOk()在连接到该辅助节点的mongo shell中运行来允许辅助节点接受读取.不建议允许从辅助节点读取,因为如果节点尚未与主节点同步,则可能正在读取过时数据.

  • `slaveOK()` 不再政治正确,请使用 ` secondaryOk()` (2认同)

Uly*_*ves 15

我通过简单地修复我的Node.js用于连接MongoDB的MongoDB的URI来解决这个问题.

当出现此错误时,我的URI就是

mongodb://user:password@host:port/datatabase,

这给了我错误而不是master和slaveOK = false.

然后我更改了URI以添加副本集信息,URI变为如下所示:

mongodb://user:password@host:port,replicaSetHost:replicaSetPort/database?replicaSet=rs-someServer.

现在,我不知道这是否是一般模式,因为这个配置是MongoLab使用的配置,这是我的DataBase托管的地方.但是,您可能也会通过在URI中添加副本集信息来解决问题.

  • 最好的是你让我的生产应用程序免受负面评论:) (3认同)

小智 6

我解决了这个问题(通过连接到 IBM 上的 mongoDB 实例发生)

mongoose.connect('mongodb://host1:port1/?replicaSet=rsName');
Run Code Online (Sandbox Code Playgroud)

来自:https : //mongoosejs.com/docs/connections.html#replicaset_connections