1
resposta

Como retornar o que foi modificado

Quero retornar o proprio objeto que foi atualizado no postman.

quando utilizo res.send(livros) não mostra ele atualizado com o que fiz no put. Me refiro a este trecho de cód:

static atualizarLivro= (req, res) =>{
        const id = req.params.id;

        livros.findByIdAndUpdate(id, {$set: req.body}, (err, livros) =>{
            if(err){
                res.status(500).send({message: `falha ao atualizar id ${err.message}`});
            }else{
              res.send(livros)
            }
        })
    }

Também queria entender como faço um retorno desse obj atualizado acompanhado de uma messagem, tentei algumas formas, mas não obtive sucesso.

1 resposta

Olá! Tudo bem?

Para retornar o objeto atualizado no Postman, você pode utilizar o método findByIdAndUpdate do Mongoose que, por padrão, retorna o objeto antigo antes de ser atualizado. Para que ele retorne o objeto atualizado, é necessário adicionar a opção {new: true} como segundo parâmetro.

Dessa forma, seu código ficaria assim:

static atualizarLivro= (req, res) =>{
        const id = req.params.id;

        livros.findByIdAndUpdate(id, {$set: req.body}, {new: true}, (err, livros) =>{
            if(err){
                res.status(500).send({message: `falha ao atualizar id ${err.message}`});
            }else{
              res.send(livros)
            }
        })
    }

Para retornar o objeto atualizado acompanhado de uma mensagem, você pode enviar um objeto com as informações que deseja retornar, por exemplo:

static atualizarLivro= (req, res) =>{
        const id = req.params.id;

        livros.findByIdAndUpdate(id, {$set: req.body}, {new: true}, (err, livroAtualizado) =>{
            if(err){
                res.status(500).send({message: `falha ao atualizar id ${err.message}`});
            }else{
              res.send({message: "Livro atualizado com sucesso!", livro: livroAtualizado})
            }
        })
    }

Espero ter ajudado e bons estudos!