strange mongodb and mongoose error: not master and slaveOk=false error

MonkeyBonkey picture MonkeyBonkey · May 7, 2015 · Viewed 63.2k times · Source

I'm getting a strange error in my node.js app

not master and slaveOk=false code 13435

I'm doing a findOne query using mongoose 4.0.2 hitting a mongodb 3.0.1. The query was working earlier today.

What is this error? I'm running on mongohq on their standard per gb plan.

Answer

Nocturno picture Nocturno · May 7, 2015

That means you're trying to read from a secondary node in a replica set, you can only read from the primary node by default.

You can allow a secondary node to accept reads by running rs.slaveOk() in a mongo shell that is connected to that secondary node. Allowing reads from a secondary is not recommended, because you could be reading stale data if the node isn't yet synced with the primary node.

UPDATE: As Janusz Slota's comment points out, rs.slaveOk() is no longer used. Use rs.secondaryOk() instead, however this is still not recommended. Here's the documentation for rs.secondaryOk().