web-dev-qa-db-fra.com

Le moteur de découverte et de surveillance du serveur est obsolète

J'utilise Mongoose avec mon application Node.js et voici ma configuration:

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)
})

mais dans la console, il me donne toujours l'avertissement:

DeprecationWarning: le moteur actuel de découverte et de surveillance du serveur est obsolète et sera supprimé dans une future version. Pour utiliser le nouveau moteur de découverte et de surveillance du serveur, transmettez l'option {useUnifiedTopology: true} au constructeur MongoClient.

Quel est le problème? Je n'utilisais pas useUnifiedTopology avant mais maintenant il apparaît dans la console. Je l'ai ajouté à la config mais ça me donne quand même cet avertissement, pourquoi? Je n'utilise même pas MongoClient.

Éditer

Comme Felipe Plets a répondu, il y avait un problème dans Mongoose et ils ont corrigé ce bogue dans les versions ultérieures. Vous pouvez donc résoudre le problème en mettant à jour la version mangouste.

56
iLiA

Ajoutez l'option useUnifiedTopology et définissez-la sur true .

Définissez 3 autres configurations des options mongoose.connect qui traiteront les autres DeprecationWarning .

Cette configuration fonctionne pour moi!

const url = 'mongodb://localhost:27017/db_name';
mongoose.connect(
    url, 
    { 
        useNewUrlParser: true, 
        useUnifiedTopology: true,
        useCreateIndex: true,
        useFindAndModify: false
    }
)

Cela résoudra 4 DeprecationWarning .

  1. L'analyseur de chaînes d'URL actuel est obsolète et sera supprimé dans une future version. Pour utiliser le nouvel analyseur, passez l'option {useNewUrlParser: true} à MongoClient.connect.
  2. Le moteur de détection et de surveillance du serveur actuel est obsolète et sera supprimé dans une future version. Pour utiliser le nouveau moteur de découverte et de surveillance du serveur, transmettez l'option {useUnifiedTopology: true} au constructeur MongoClient.
  3. Collection.ensureIndex est obsolète. Utilisez plutôt createIndexes.
  4. DeprecationWarning: Mongoose: findOneAndUpdate() et findOneAndDelete() sans l'option useFindAndModify définie sur false sont obsolètes. Voir: https://mongoosejs.com/docs/deprecations.html#-findandmodify- .

J'espère que ça aide.

0
Richard Vergis

Définition de la connexion mangouste seUnifiedTopology: true option

  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();
0
Sanjay kumar
   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);
    });  

}});

0
StarDrop9

Je veux ajouter à ce fil de discussion qu'il peut également avoir à voir avec d'autres dépendances.

Par exemple, rien de ce que j'ai mis à jour ou défini pour NodeJS, MongoDB ou Mongoose n'était le problème - cependant - connect-mongodb-session a été mis à jour et commence à utiliser la même erreur. La solution, dans ce cas, était simplement de restaurer la version de connect-mongodb-session à partir de la version 2.3.0 à 2.2.0.

enter image description here

0
Steven Ventimiglia

J'étais également confronté au même problème:

  1. Je me suis assuré d'être connecté à mongoDB en exécutant ce qui suit sur le terminal:

    brew services start [email protected]
    

    Et j'ai obtenu la sortie:

    Successfully started `mongodb-community`
    

Instructions pour installer mongodb sur
https://docs.mongodb.com/manual/tutorial/install-mongodb-on-os-x/ ou https://www.youtube.com/watch? v = IGIcrMTtjo

  1. Ma configuration était la suivante:

    mongoose.connect(config.mongo_uri, {
        useUnifiedTopology: true,
        useNewUrlParser: true})
        .then(() => console.log("Connected to Database"))
        .catch(err => console.error("An error has occured", err));
    

Ce qui a résolu mon problème!

0
Miguel Chiau