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

Mongoose:findOneAndUpdate returnerer ikke opdateret dokument

Hvorfor sker det?

standard er at returnere den originale, uændret dokument. Hvis du ønsker at det nye, opdaterede dokument skal returneres, skal du sende et ekstra argument:et objekt med new egenskab sat til true .

Fra mongoose-dokumenterne:

Forespørgsel#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`
});

Tilgængelige muligheder

  • new :bool - hvis sandt , returner den modificerede dokument frem for originalen. standard er falsk (ændret i 4.0)

Løsning

Send {new: true} hvis du vil have det opdaterede resultat i doc variabel:

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


  1. Rescue Timeout::Fejl fra Redis Gem (Ruby)

  2. Geospatial support i MongoDB

  3. Sådan bruger du mongoimport til at importere csv

  4. Transaktionsopret med validering i ServiceStack Redis Client