1
resposta

[Sugestão] Correção na Consulta de Livros por Autor no Endpoint /autores/:id/livros

Ao testar localhost:3000/autores/1/livros no Postman, a resposta trouxe apenas os livros, sem os dados do autor. Isso aconteceu porque params.id recebe apenas 1 e busca um autor com id = 1, junto com seus livros.

O problema surgiu porque os IDs de autores e editoras mudavam toda vez que eu reiniciava o Docker. Inicialmente, os IDs eram 1, 2, 3, mas ao parar e rodar o Docker novamente, eles viravam 4, 5, 6. Como os livros tinham autor_id e editora_id fixos em 1, 2, 3, a relação não funcionava, e o autor não era encontrado.

Solução

No arquivo src/db/seeds/livraria.js, substituí este trecho:

`

await knex('livros').del();

await knex('editoras').del();

await knex('autores').del();

`

Por:

`

await knex.raw('TRUNCATE TABLE livros RESTART IDENTITY CASCADE');

await knex.raw('TRUNCATE TABLE editoras RESTART IDENTITY CASCADE');

await knex.raw('TRUNCATE TABLE autores RESTART IDENTITY CASCADE');

`

  1. TRUNCATE TABLE → Remove todos os registros das tabelas.
  2. RESTART IDENTITY → Faz os IDs voltarem a partir de 1.
  3. CASCADE → Garante que todas as tabelas relacionadas também sejam limpas corretamente.

Isso resolve o problema porque sempre que os seeds são executados, os IDs voltam a ser 1, 2, 3, mantendo a consistência das relações entre autores, editoras e livros.

Por fim, basta reiniciar o docker!

1 resposta

Olá, estudante. Tudo bem?

Muito obrigado por compartilhar o seu código aqui com a gente. Parabéns pelo trabalho. Continue com essa dedicação.

Gostei de como você identificou a inconsistência dos IDs ao reiniciar o Docker e resolveu isso com TRUNCATE TABLE RESTART IDENTITY CASCADE. Isso mantém a integridade dos dados e evita problemas futuros com chaves estrangeiras. Muito bom!

Conte com o apoio do Fórum. Abraços e bons estudos.