92 votes

DeprecationWarning: collection.findAndModify est obsolète. Utilisez à la place findOneAndUpdate, findOneAndReplace ou findOneAndDelete?

J'utilise mangouste findOneAndUpdate mais j'obtiens toujours l'erreur,

DeprecationWarning: collection.findAndModify est obsolète. Utilisez à la place findOneAndUpdate, findOneAndReplace ou findOneAndDelete.

Mais je n'utilise même pas findAndModify , pourquoi convertit-il ma requête en findAndModify ?

27voto

Changez globalement la configuration de la mangouste comme ceci:

 mongoose.set('useFindAndModify', false);

Ou passez les options dans votre chaîne de requête comme ceci:

 Person.findOneAndUpdate({_id: id}, {$set: body}, {new: true, useFindAndModify: false}).then(..

Vous pouvez également gérer les autres avertissements d'obsolescence de la mangouste en tant que documents de mention

 mongoose.set('useNewUrlParser', true);
mongoose.set('useCreateIndex', true);

C'est ça.

8voto

Polliny Points 81

vous pouvez également passer les options à la connexion avec l'option d'exigence useNewUrlParser . Regardez ce qui suit -> https://mongoosejs.com/docs/deprecations.html

 mongoose.connect(config.MONGODB_URI, { useNewUrlParser: true, useFindAndModify: false}); 

5voto

Devesh Points 87

Vous devez modifier les options de votre méthode de connexion pour vous débarrasser de l'erreur:

 mongoose.connect("mongodb://localhost/DB_Name", {
  keepAlive: true,
  useNewUrlParser: true,
  useCreateIndex: true,
  useFindAndModify: false
});

Vous pouvez l'utiliser comme ça.

5voto

Raghu P Rangan Points 21

La version Mongoose se met tellement à jour que,

pour utiliser Model.findByIdAndUpdate() il faut un paramètre d'option voir également ci-dessous

 List.findByIdAndUpdate(id, update, options, callback) // executes

pour résoudre ce problème

Passez ce useFindAndModify: false dans la mangouste.connectez au démarrage

 mongoose.connect("mongodb://localhost:27017/yourDatabase", { useNewUrlParser: true, useUnifiedTopology: true ,useFindAndModify: false });

ou alors

 mongoose.set('useFindAndModify', false); 

cliquez ici pour vérifier les dépréciations associées

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