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.

231voto

Felipe Plets Points 148

Mise à jour

La version 5.7.1 de Mongoose a été publiée et semble résoudre le problème, donc la configuration de l'option useUnifiedTopology fonctionne comme prévu.

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

Réponse originale

J'ai été confronté au même problème et j'ai décidé d'approfondir le code de Mongoose : https://github.com/Automattic/mongoose/search?q=useUnifiedTopology&unscoped_q=useUnifiedTopology

Il semble s'agir d'une option ajoutée à la version 5.7 de Mongoose et pas encore bien documentée. Je n'ai même pas pu la trouver mentionnée dans l'historique de la bibliothèque https://github.com/Automattic/mongoose/blob/master/History.md

D'après un commentaire dans le code :

  • @param {Boolean} [options.useUnifiedTopology=false] Faux par défaut. Définissez à true pour opter pour le moteur de surveillance des ensembles de réplicas et des clusters distribués du pilote MongoDB.

Il y a également un problème sur le GitHub du projet concernant cette erreur : https://github.com/Automattic/mongoose/issues/8156

Dans mon cas, je n'utilise pas Mongoose dans un ensemble de réplicas ou un cluster distribué et je pense que l'option devrait être fausse. Mais si c'est faux, il se plaint que le paramètre devrait être vrai. Une fois que c'est vrai, ça ne fonctionne toujours pas, probablement parce que ma base de données ne fonctionne pas sur un ensemble de réplicas ou un cluster distribué.

J'ai rétrogradé vers la version 5.6.13 et mon projet fonctionne à nouveau correctement. Donc la seule option que je vois pour l'instant est de le rétrograder et d'attendre la correction pour mettre à jour vers une version plus récente.

31voto

tamilselvan s Points 645

En mongoDB, ils ont rendu obsolète le paquet actuel de surveillance du serveur et du moteur, donc vous devez utiliser le nouveau paquet de surveillance du serveur et du moteur. Donc vous utilisez simplement

{ useUnifiedTopology:true }

mongoose.connect("coller le lien de la base de données", {useUnifiedTopology: true, useNewUrlParser: true, useCreateIndex: true });

13voto

Cela a résolu mon problème.

 const url = 'mongodb://localhost:27017';

 const client = new MongoClient(url, {useUnifiedTopology: true});

5voto

mongoose.connect('mongodb://localhost:27017/Tododb', { useNewUrlParser: true, useUnifiedTopology: true });

Supprimera les erreurs suivantes:-

(node:7481) Avertissement de dépréciation: l'analyseur 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.

(node:7481) Avertissement de dépréciation: le moteur de découverte et de surveillance de serveur actuel est obsolète et sera supprimé dans une version future. Pour utiliser le nouveau moteur de découverte et de surveillance de serveur, passez l'option { useUnifiedTopology: true } au constructeur MongoClient.

3voto

Niran Yousuf Points 83

Vous pouvez essayer async await

const connectDB = async () => {
    try {
        await mongoose.connect(, {
            useNewUrlParser: true,
            useCreateIndex: true,
            useUnifiedTopology: true,
            useFindAndModify: false
        });
        console.log("MongoDB Connecté")
    } catch (err) {
        console.error(err.message);
        process.exit(1);
    }
};

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