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');
`
- TRUNCATE TABLE → Remove todos os registros das tabelas.
- RESTART IDENTITY → Faz os IDs voltarem a partir de 1.
- 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!