MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Mongoose :findOneAndUpdate ne renvoie pas le document mis à jour

Pourquoi cela se produit ?

La valeur par défaut est de retourner l'original, non modifié document. Si vous voulez que le nouveau document mis à jour soit renvoyé, vous devez passer un argument supplémentaire :un objet avec le new propriété définie sur true .

À partir de la documentation sur la mangouste :

Query#findOneAndUpdate

Model.findOneAndUpdate(conditions, update, options, (error, doc) => {
  // error: any errors that occurred
  // doc: the document before updates are applied if `new: false`, or after updates if `new = true`
});

Options disponibles

  • new :booléen - si vrai , renvoie le modifié document plutôt que l'original. par défaut à faux (modifié en 4.0)

Solution

Transmettez {new: true} si vous voulez le résultat mis à jour dans le doc variables :

//                                                         V--- THIS WAS ADDED
Cat.findOneAndUpdate({age: 17}, {$set:{name:"Naomi"}}, {new: true}, (err, doc) => {
    if (err) {
        console.log("Something wrong when updating data!");
    }

    console.log(doc);
});