MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Mongoose:findOneAndUpdate não retorna documento atualizado

Por que isso acontece?


O padrão é devolver o original, inalterado documento. Se você deseja que o documento novo e atualizado seja retornado, você deve passar um argumento adicional:um objeto com o new propriedade definida como true .

Dos documentos do mangusto:

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

Opções disponíveis
  • new :bool - se true , retorne o modificado documento em vez do original. o padrão é falso (alterado em 4.0)

Solução


Passe {new: true} se você quiser o resultado atualizado no doc variável:
//                                                         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);
});