1 votes

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

Je suis en train d'utiliser 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(`connexion à la base de données établie`)
}).catch(err=>{
    console.log(`erreur de base de données ${err.message}`);
    process.exit(-1)
})

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

Avertissement de dépréciation : le moteur actuel de découverte et de surveillance du serveur est obsolète et sera supprimé dans une version future. Pour utiliser le nouveau moteur de découverte et de surveillance du serveur, passez 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 configuration mais cela me donne toujours cet avertissement, pourquoi? Je n'utilise même pas MongoClient.

Éditer

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

2voto

Richard Vergis Points 164

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

Définissez les 3 autres configurations des options de mongoose.connect qui géreront les autres DeprecationWarning restantes.

Cette configuration fonctionne pour moi!

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

Cela résoudra 4 DeprecationWarning.

  1. Le parseur d'URL actuel est obsolète et sera supprimé dans une version future. Pour utiliser le nouveau parseur, passez l'option { useNewUrlParser: true } à MongoClient.connect.
  2. Le moteur actuel de découverte et de suivi de serveur est obsolète et sera supprimé dans une version future. Pour utiliser le nouveau moteur de découverte et de suivi de serveur, passez l'option { useUnifiedTopology: true } au constructeur MongoClient.
  3. Collection.ensureIndex est obsolète. Utilisez createIndexes à la place.
  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 cela vous aidera.

2voto

Codemaker Points 639

Utilisez le code suivant pour éviter cette erreur

MongoClient.connect(connectionString, {useNewUrlParser: true, useUnifiedTopology: true});

2voto

mohamad b Points 51

Si votre code inclut createConnetion pour une raison quelconque (Dans mon cas, j'utilise GridFsStorage), essayez d'ajouter ce qui suit à votre code :

    options: {
        useUnifiedTopology: true,
    }

juste après le fichier, comme ceci :

    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 votre cas ressemble au mien, cela résoudra sûrement votre problème. Cordialement

1voto

shetkar vinayak Points 45

Cela a fonctionné pour moi

Pour les personnes utilisant MongoClient, essayez ceci:

MongoClient.connect(connectionurl, 
  {useUnifiedTopology: true, useNewUrlParser: true},  callback() {

Pour mongoose:

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

Supprimez les autres options de connexion

1voto

Alok Srivastav Points 21
const mongoose = require("mongoose");

mongoose.connect('mongodb://localhost:27017/Edureka',{ useNewUrlParser: true, useUnifiedTopology: true }, (erreur)=> {
    const statusConnexion = !erreur ? 'Succès' : 'Erreur de connexion à la base de données';
    console.log(statusConnexion);
});

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X