node.js mongodb mongoose

node.js - El motor de detección y supervisión del servidor está en desuso



mongodb mongoose (3)

En mongoDB, dejaron de utilizar el servidor actual y el paquete de supervisión del motor, por lo que debe usar un nuevo servidor y el paquete de supervisión del motor. Así que solo usas

{useUnifiedTopology: true}

mongoose.connect(process.env.test_db, {useUnifiedTopology: true, useNewUrlParser: true, useCreateIndex: true });

Estoy usando mangosta con mi aplicación node.js y esta es mi configuración

mongoose.connect(process.env.MONGO_URI, { useNewUrlParser: true, useUnifiedTopology: true, useCreateIndex: true, useFindAndModify: false }).then(()=>{ console.log(`connection to database established`) }).catch(err=>{ console.log(`db error ${err.message}`); process.exit(-1) })

pero en la consola todavía me da una advertencia

DeprecationWarning: el motor actual de detección y supervisión del servidor está en desuso y se eliminará en una versión futura. Para usar el nuevo motor de Descubrimiento y monitoreo del servidor, pase la opción {useUnifiedTopology: true} al constructor MongoClient.

¿cual es el problema? No estaba usando useUnifiedTopology antes, pero ahora apareció en la consola y lo agregué pero todavía me da este error. ¿por qué? Ni siquiera uso mongoClient.


Esto funciono para mi

MongoClient.connect(connectionurl, {useUnifiedTopology: true, useNewUrlParser: true}, callback() { mongoose.connect(connectionurl, {useUnifiedTopology: true, useNewUrlParser: true}).then(()=>{

Eliminar otras conexiones Opciones


Actualizar

Mongoose 5.7.1 se lanzó y parece solucionar el problema, por lo que configurar la opción useUnifiedTopology funciona como se esperaba.

mongoose.connect(mongoConnectionString, {useUnifiedTopology: true});

Respuesta original

Estaba enfrentando el mismo problema y decidí profundizar en el código Mongoose: https://github.com/Automattic/mongoose/search?q=useUnifiedTopology&unscoped_q=useUnifiedTopology

Parece ser una opción agregada en la versión 5.7 de Mongoose y aún no está bien documentada. Ni siquiera pude encontrarlo mencionado en el historial de la biblioteca https://github.com/Automattic/mongoose/blob/master/History.md

Según un comentario en el código:

  • @param {Boolean} [options.useUnifiedTopology = false] Falso por defecto. Establezca en true para optar por el conjunto de réplica del controlador MongoDB y el motor de monitoreo de clúster fragmentado.

También hay un problema en el proyecto GitHub sobre este error: https://github.com/Automattic/mongoose/issues/8156

En mi caso, no uso Mongoose en un conjunto de réplicas o clúster fragmentado y, aunque la opción debería ser falsa. Pero si es falso, se queja, la configuración debe ser verdadera. Una vez que es cierto, todavía no funciona, probablemente porque mi base de datos no se ejecuta en un conjunto de réplicas o clúster fragmentado.

He bajado a 5.6.13 y mi proyecto vuelve a funcionar bien. Entonces, la única opción que veo por ahora es degradarlo y esperar a que la solución se actualice para una versión más nueva.