autoindex - Error extraño de mongodb y mangosta: no maestro y slaveOk=error falso
mongoose strict (4)
Es probable que su nodo maestro haya fallado y usted esté tratando de leer desde un nodo esclavo, pero de manera predeterminada (y una práctica de seguridad como la sincronización de datos) su fuente de lectura está configurada solo para el nodo primario. Puede adjuntar opciones al final de su cadena de conexión, como ''? ReadPreference = secundarias'' si, por ejemplo, utiliza un nodo.
Recibo un error extraño en mi aplicación node.js
not master and slaveOk=false code 13435
Estoy haciendo una consulta de findOne usando mongoose 4.0.2 golpeando un mongodb 3.0.1. La consulta estaba funcionando hoy más temprano.
¿Qué es este error? Estoy ejecutando mongohq en su plan estándar por gb.
Eso significa que está intentando leer desde un nodo secundario en un conjunto de réplicas, solo puede leer desde el nodo primario de forma predeterminada.
Puede permitir que un nodo secundario acepte lecturas ejecutando rs.slaveOk()
en un shell mongo que esté conectado a ese nodo secundario. No se recomienda permitir las lecturas de un secundario, ya que podría estar leyendo datos obsoletos si el nodo aún no está sincronizado con el nodo primario.
Esto me funciona en mongoose 4.x y mongodb 3.0.x:
model.find().read(''secondary'').....
Resolví esto simplemente arreglando el URI que mi Node.js estaba usando para conectarse a MongoDB con Mongoose.
Cuando ocurrió este error, mi URI fue
mongodb://user:password@host:port/datatabase
,
y esto me estaba dando el error no master y slaveOK = falso .
Luego cambié el URI para agregar la información del conjunto de réplicas, y el URI se convirtió en algo así:
mongodb://user:password@host:port,replicaSetHost:replicaSetPort/database?replicaSet=rs-someServer
.
Ahora, no sé si este es un patrón general, porque esta configuración es la que usa MongoLab, que es donde se aloja mi base de datos. Sin embargo, es probable que resuelva el problema agregando también la información del conjunto de réplicas en el URI.