Skip to content

Mettre à jour les données

Supposons que vous souhaitiez mettre à jour le titre d'un livre spécifique dans votre collection. Voici comment vous pouvez le faire en utilisant Mongoose :

javascript
// Importation de Mongoose
import mongoose from 'mongoose';

// Connexion à MongoDB
mongoose.connect('mongodb://localhost:27017/maBibliotheque');

// Modèle Livre
const Livre = mongoose.model('Livre', { titre: String, auteur: String });

// Mise à jour d'un livre
Livre.findOneAndUpdate({ auteur: 'Victor Hugo' }, { titre: 'Les Misérables' }, { new: true })
  .then(doc => {
    console.log('Livre mis à jour :', doc);
  })
  .catch(err => {
    console.error('Erreur lors de la mise à jour :', err);
  });
// Importation de Mongoose
import mongoose from 'mongoose';

// Connexion à MongoDB
mongoose.connect('mongodb://localhost:27017/maBibliotheque');

// Modèle Livre
const Livre = mongoose.model('Livre', { titre: String, auteur: String });

// Mise à jour d'un livre
Livre.findOneAndUpdate({ auteur: 'Victor Hugo' }, { titre: 'Les Misérables' }, { new: true })
  .then(doc => {
    console.log('Livre mis à jour :', doc);
  })
  .catch(err => {
    console.error('Erreur lors de la mise à jour :', err);
  });

Dans cet exemple, findOneAndUpdate est utilisée pour trouver un livre par l'auteur "Victor Hugo" et mettre à jour son titre en "Les Misérables". L'option { new: true } nous assure que le document retourné est la version mise à jour.

Astuces et Bonnes Pratiques

Bonnes pratiques pour la mise à jour ::

  • Utilisez toujours des critères de sélection précis dans findOneAndUpdate pour éviter de mettre à jour le mauvais document.
  • Vérifiez l'existence du document avant de tenter une mise à jour pour gérer les cas où le document n'existe pas.

Explication de l'option { new: true }

L'option { new: true } dans la méthode findOneAndUpdate de Mongoose est une option très utile qui change le comportement par défaut de cette méthode. Pour bien comprendre, imaginons une situation de la vie quotidienne.

Explication Simple

Pensez à la méthode findOneAndUpdate comme à l'acte de demander à un ami de remplacer un vieux téléphone par un nouveau modèle dans votre chambre. Par défaut, après avoir effectué le changement, votre ami vous rapporte l'ancien téléphone (comportement par défaut de findOneAndUpdate). Cependant, si vous lui dites spécifiquement de vous montrer le nouveau téléphone après l'avoir placé (ce qui correspond à { new: true }), il vous montrera le nouveau modèle. Cela vous permet de voir immédiatement le résultat de la mise à jour.

Application dans le Code

Dans le contexte de Mongoose et MongoDB, sans l'option { new: true }, findOneAndUpdate renvoie le document avant qu'il ne soit mis à jour. Cela peut être source de confusion car vous pourriez vous attendre à voir les nouvelles informations. En utilisant { new: true }, vous demandez explicitement à Mongoose de renvoyer la version mise à jour du document.

javascript
Livre.findOneAndUpdate({ auteur: 'Victor Hugo' }, { titre: 'Les Misérables' }, { new: true })
  .then(doc => {
    console.log('Version mise à jour du livre :', doc);
  })
  .catch(err => {
    console.error('Erreur lors de la mise à jour :', err);
  });
Livre.findOneAndUpdate({ auteur: 'Victor Hugo' }, { titre: 'Les Misérables' }, { new: true })
  .then(doc => {
    console.log('Version mise à jour du livre :', doc);
  })
  .catch(err => {
    console.error('Erreur lors de la mise à jour :', err);
  });

Dans cet exemple, après la mise à jour du livre, la version mise à jour (avec le nouveau titre) est renvoyée et affichée.