MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Mongoose:findOneAndUpdate non restituisce il documento aggiornato

Perché questo accade?

Il predefinito è restituire l'originale, inalterato documento. Se vuoi che venga restituito il nuovo documento aggiornato devi passare un argomento aggiuntivo:un oggetto con il new proprietà impostata su true .

Dai documenti della mangusta:

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`
});

Opzioni disponibili

  • new :bool - se vero , restituisci il modificato documento anziché l'originale. predefinito su false (modificato in 4.0)

Soluzione

Passa {new: true} se vuoi il risultato aggiornato nel doc variabile:

//                                                         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);
});