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 todavía me da la advertencia:
DeprecationWarning: el motor actual de detección y supervisión de servidores está en desuso y se eliminará en una versión futura. Para usar el nuevo motor Server Discover and Monitoring, pase la opción {useUnifiedTopology: true} al constructor 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 lo uso MongoClient
.
Editar
Como respondió Felipe Plets, había un problema en Mongoose y solucionaron este error en versiones posteriores. Para que pueda resolver el problema actualizando la versión de mangosta.
5.7.7
si usa encreateConnection()
lugar deconnect()
, comomongoose.createConnection(conString, { useUnifiedTopology: true })
.useUnifiedTopology
no se tomará en consideración y seguirá recibiendo la advertencia. evento conmongoose.set('useUnifiedTopology', true)
sigo recibiendo la advertencia.En mongoDB, desaprobaron el paquete actual de monitoreo de servidor y motor, por lo que debe usar un nuevo paquete de monitoreo de servidor y motor. Así que solo usa
mongoose.connect("paste db link", {useUnifiedTopology: true, useNewUrlParser: true, useCreateIndex: true });
fuente
useUnifiedTopology: true
en mi configuración y todavía me muestra una advertenciauseUnifiedTopology: true
pero sigue apareciendo el mismo mensaje en la consola.mongoose.set('useUnifiedTopology', true)
antes de mongoose.connect.Esto resolvió mi problema.
const url = 'mongodb://localhost:27017'; const client = new MongoClient(url, {useUnifiedTopology: true});
fuente
Puedes probar async await
const connectDB = async () => { try { await mongoose.connect(<database url>, { useNewUrlParser: true, useCreateIndex: true, useUnifiedTopology: true, useFindAndModify: false }); console.log("MongoDB Conected") } catch (err) { console.error(err.message); process.exit(1); } };
fuente
Utilice el siguiente código para evitar ese error
MongoClient.connect(connectionString, {useNewUrlParser: true, useUnifiedTopology: true});
fuente
mongoose.connect('mongodb://localhost:27017/Tododb', { useNewUrlParser: true, useUnifiedTopology: true });
Eliminará los siguientes errores: -
(nodo: 7481) DeprecationWarning: el analizador de cadenas de URL actual está obsoleto y se eliminará en una versión futura. Para usar el nuevo analizador, pase la opción {useNewUrlParser: true} a MongoClient.connect.
(nodo: 7481) DeprecationWarning: el motor actual de detección y supervisión de servidores está obsoleto y se eliminará en una versión futura. Para usar el nuevo motor Server Discover and Monitoring, pase la opción {useUnifiedTopology: true} al constructor MongoClient.
fuente
useUnifiedTopology: true
a todas las dependencias que usa mongoDB, en mi caso estaba usandowiston-mongodb
, tuve que agregarlo en la opción tambiénwinston.add(new winston.transports.MongoDB({ db: config.get('db'), options: { useUnifiedTopology: true } }));
Agregue la opción useUnifiedTopology y establézcala en true .
Establezca otras 3 configuraciones de las opciones de mongoose.connect que se ocuparán de otras DeprecationWarning restantes .
¡Esta configuración me funciona!
const url = 'mongodb://localhost:27017/db_name'; mongoose.connect( url, { useNewUrlParser: true, useUnifiedTopology: true, useCreateIndex: true, useFindAndModify: false } )
Esto resolverá 4 DeprecationWarning .
findOneAndUpdate()
yfindOneAndDelete()
sin lauseFindAndModify
opción establecida en false están en desuso. Ver: https://mongoosejs.com/docs/deprecations.html#-findandmodify- .Espero eso ayude.
fuente
const mongoose = require("mongoose"); mongoose.connect('mongodb://localhost:27017/Edureka',{ useNewUrlParser: true, useUnifiedTopology: true }, (error)=> { const connectionStatus = !error ? 'Success': 'Error Connecting to database'; console.log(connectionStatus); });
fuente
Si su código incluye createConnetion por alguna razón (en mi caso estoy usando GridFsStorage), intente agregar lo siguiente a su código:
options: { useUnifiedTopology: true, }
justo después del archivo, así:
const storage = new GridFsStorage({ url: mongodbUrl, file: (req, file) => { return new Promise((resolve, reject) => { crypto.randomBytes(16, (err, buf) => { if (err) { return reject(err); } const filename = buf.toString('hex') + path.extname(file.originalname); const fileInfo = { filename: filename, bucketName: 'uploads' }; resolve(fileInfo); }); }); }, options: { useUnifiedTopology: true, } })
Si su caso se parece al mío, esto seguramente resolverá su problema. Saludos
fuente
También me enfrentaba al mismo problema:
Me aseguré de estar conectado a mongoDB ejecutando lo siguiente en la terminal:
brew services start mongodb-community@4.2
Y obtuve el resultado:
Successfully started `mongodb-community`
Instrucciones para instalar mongodb en
https://docs.mongodb.com/manual/tutorial/install-mongodb-on-os-x/ o https://www.youtube.com/watch?v=IGIcrMTtjoU
Mi configuración fue la siguiente:
mongoose.connect(config.mongo_uri, { useUnifiedTopology: true, useNewUrlParser: true}) .then(() => console.log("Connected to Database")) .catch(err => console.error("An error has occured", err));
¡Lo que resolvió mi problema!
fuente
const mongo = require('mongodb').MongoClient; mongo.connect(process.env.DATABASE,{useUnifiedTopology: true, useNewUrlParser: true}, (err, db) => { if(err) { console.log('Database error: ' + err); } else { console.log('Successful database connection'); auth(app, db) routes(app, db) app.listen(process.env.PORT || 3000, () => { console.log("Listening on port " + process.env.PORT); });
}});
fuente
Configuración de mongoose connect useUnifiedTopology: opción verdadera
import mongoose from 'mongoose'; const server = '127.0.0.1:27017'; // REPLACE WITH YOUR DB SERVER const database = 'DBName'; // REPLACE WITH YOUR DB NAME class Database { constructor() { this._connect(); } _connect() { mongoose.Promise = global.Promise; // * Local DB SERVER * mongoose .connect(`mongodb://${server}/${database}`, { useNewUrlParser: true, useCreateIndex: true, useUnifiedTopology: true }) .then( () => console.log(`mongoose version: ${mongoose.version}`), console.log('Database connection successful'), ) .catch(err => console.error('Database connection error', err)); } } module.exports = new Database();
fuente
Quiero agregar a este hilo que también puede tener que ver con otras dependencias.
Por ejemplo, nada de lo que actualicé o configuré para NodeJS, MongoDB o Mongoose fue el problema, sin embargo,
connect-mongodb-session
se actualizó y comenzó a lanzar el mismo error. La solución, en este caso, fue simplemente revertir la versión deconnect-mongodb-session
de una versión2.3.0
a otra2.2.0
.fuente
Tuve los mismos errores apareciendo cada vez y esto funcionó para mí
mongoose.connect("mongodb://localhost:27017/${yourDB}", { useNewUrlParser: true, useUnifiedTopology: true }, function (err) { if (err) { console.log(err) } else { console.log("Database connection successful") } });
fuente
usa esta línea, esto funcionó para mí
mongoose.set('useUnifiedTopology', true);
fuente
Si está utilizando un servidor MongoDB, luego de usar connect en el reloj del clúster al conectarse y encontrar la URL, la URL será algo así
<mongodb+srv://Rohan:<password>@cluster0-3kcv6.mongodb.net/<dbname>?retryWrites=true&w=majority>
En este caso, no olvide reemplazar la contraseña con la contraseña de su base de datos y el nombre de la base de datos y luego use
const client = new MongoClient(url,{useUnifiedTopology:true});
fuente
mongoose.connect("DBURL", {useUnifiedTopology: true, useNewUrlParser: true, useCreateIndex: true },(err)=>{ if(!err){ console.log('MongoDB connection sucess'); } else{ console.log('connection not established :' + JSON.stringify(err,undefined,2)); } });
fuente
Es simple, elimine el código que ha usado y use el siguiente código:
const url = 'mongodb://localhost:27017'; var dbConn = mongodb.MongoClient.connect(url, {useUnifiedTopology: true});
fuente
si usó mecanografiado agregue config a MongoOptions
const MongoOptions: MongoClientOptions = { useNewUrlParser: true, useUnifiedTopology: true, }; const client = await MongoClient.connect(url, MongoOptions); if you not used typescript const MongoOptions= { useNewUrlParser: true, useUnifiedTopology: true, };
fuente
Es importante ejecutar su comando mongod y mantener el servidor en funcionamiento. De lo contrario, seguirá viendo este error.
Te adjunto mi codigo:
fuente
Esto funcionará:
// Connect to Mongo mongoose.set("useNewUrlParser", true); mongoose.set("useUnifiedTopology", true); mongoose .connect(db) // Connection String here .then(() => console.log("MongoDB Connected...")) .catch(() => console.log(err));
fuente
Esto funcionó para mi
Para las personas que usan,
MongoClient
pruebe esto:MongoClient.connect(connectionurl, {useUnifiedTopology: true, useNewUrlParser: true}, callback() {
Para mangosta:
mongoose.connect(connectionurl, {useUnifiedTopology: true, useNewUrlParser: true}).then(()=>{
Eliminar otras opciones de conexión
fuente