Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Bug] Erro no express

antes eu estava tendo erro com express na parte do codigo app.use, porem agora o post não funciona, mesmo revisando o codigo. (uns dias atras estava funcionando normalmente).

TypeError: livros.push is not a function at file:///C:/Users/vidar/Desktop/htdocs/Alura/Alura-back-nodejs/src/app.js:20:12 at Layer.handle [as handle_request] (C:\Users\vidar\Desktop\htdocs\Alura\Alura-back-nodejs\node_modules\express\lib\router\layer.js:95:5)

Parte do codigo:

import express from "express";

const app = express(); app.use(express.json());

const livros = { "id":"1", "titulo":"senhor dos aneis" }

app.post("/livros", (req,res) => { livros.push(req.body); res.status(201).send("Atualizado");

});

export default app;

1 resposta
solução!

Beleza Mateus? É porque você está tentando usar o método push() em um objeto {} em vez de um array []. O método push() é usado para adicionar elementos a um array, não a um objeto.

Pra corrigir isso, você inicializa livros como um array vazio [] em vez de um objeto {}:

const livros = [];

Assim você pode usar o método push() para adicionar os livros recebidos na requisição ao array livros. E você pode garantir que a estrutura do objeto livros seja consistente com o que você espera receber na requisição POST. Por exemplo, se você espera um array de objetos representando livros, você poderia fazer algo assim:

const livros = [];

app.post("/livros", (req, res) => {
  const novoLivro = req.body;
  livros.push(novoLivro);
  res.status(201).send("Livro adicionado com sucesso!");
});

Daí cada livro enviado na requisição POST será adicionado ao array livros.

Espero ter contribuído com seus estudos.