Estoy usando Mongoose 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 me sigue dando el aviso:
DeprecationWarning: el motor actual de supervisión y detección de servidores está obsoleto y se eliminará en una versión futura. Para utilizar el nuevo motor de detección y supervisión de servidores, pase la opción { useUnifiedTopology: true } al constructor de MongoClient.
¿Cuál es el problema? No estaba usando useUnifiedTopology antes, pero ahora aparece en la consola. Lo agregué a la configuración pero todavía me da esta advertencia, ¿por qué? Ni siquiera uso MongoClient .
Como respondió Felipe Plets, había un problema en Mongoose y arreglaron este error en versiones posteriores. Entonces puede resolver el problema actualizando la versión de mangosta.
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, {useNewUrlParser: true, 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 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 de forma predeterminada. Establézcalo en
truepara optar por el conjunto de réplicas del controlador MongoDB y el motor de supervisión 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 un clúster fragmentado y, aunque la opción debería ser falsa. Pero si es falso, la configuración debería 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 en un clúster fragmentado.
Bajé a 5.6.13 y mi proyecto volvió 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.
En mongoDB, dejaron de usar el paquete de monitoreo de motor y servidor actual, por lo que debe usar un nuevo paquete de monitoreo de motor y servidor. Entonces solo usas
{ usar Topología unificada: verdadero }
mongoose.connect("paste db link", {useUnifiedTopology: true, useNewUrlParser: true, useCreateIndex: true });Esto resolvió mi problema.
const url = 'mongodb://localhost:27017'; const client = new MongoClient(url, {useUnifiedTopology: true});