sql >> Databasteknik >  >> NoSQL >> MongoDB

Mongoose:findOneAndUpdate returnerar inte uppdaterat dokument

Varför händer detta?

standard är att returnera originalet, oförändrat dokumentera. Om du vill att det nya, uppdaterade dokumentet ska returneras måste du skicka ett extra argument:ett objekt med new egenskapen inställd på true .

Från mongoose-dokumenten:

Fråga#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`
});

Tillgängliga alternativ

  • new :bool - om sant , returnera den modifierade dokumentet snarare än originalet. förinställningen är falsk (ändrat i 4.0)

Lösning

Passera {new: true} om du vill ha det uppdaterade resultatet 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. Lagra en bild i MongoDB med Node.js/Express och Mongoose

  2. Hur man ställer in hanterare i RedMQ från händelser som tagits upp i min domän

  3. Använd redis för att skapa en realtidschatt med socket.io och NodeJs

  4. MongoDB $stdDevPop