Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Método put não dá erro porém também não atualiza ID 3 no postman

Boa noite! Ao tentar atualizar o título do livro com id3, não estou tendo êxito. Poderia me ajudar por favor? Vou deixar o código a seguir:

import express from "express";

const app = express();

app.use(express.json())

const livros = [
    {id: 1, "título": "Senhor dos Anéis"},
    {id: 2, "título": "O Hobbit"}
]

app.get('/', (req, res) => {
    res.status(200).send('Curso de Node');
}) 

app.get('/livros', (req, res) => {
    res.status(200).json(livros)
}) 

app.get('/livros/:id', (req, res) => {
    let index = buscaLivro(req.params.id);
    res.json(livros[index]);
})


app.post('/livros', (req, res) => {
    livros.push(req.body);
    res.status(201).send('Livro cadastrado com sucesso')
})

app.put('/livros/:id', (req, res) => {
    let index = buscaLivro(req.params.id);
    livros[index].titulo = req.body.titulo;
    res.json(livros)

})

function buscaLivro(id) {
    return livros.findIndex(livro => livro.id == id)
}

export default app

Imagem do postman (com put executado): Insira aqui a descrição dessa imagem para ajudar na acessibilidade

2 respostas
solução!

Oi, Pedro, tudo bem?

O problema é que você cadastrou os livros com a propriedade título, com acento no i. E, ao tentar alterar um livro, você também está passando título com acento no corpo da requisição. Entretanto, o código do método app.put espera receber um parâmetro chamado titulo, sem o acento, e por isso ele não está conseguindo atualizar o livro corretamente.

Basta você corrigir o nome da propriedade nas requisições do Postman e deve funcionar.

Abraços e bons estudos!

muito bem observado, Antônio! havia passado despercebido no meu radar. Muito obrigado