1
resposta

[Dúvida] "message": "Cannot read properties of null (reading '_id') - falha ao cadastar livro"

Na hora de juntar o autor com o livro aparece essa mensagem de erro "Cannot read properties of null (reading '_id') - falha ao cadastrar livro", tbm estou com problema nas mensagens de erro, principalmente no post que funciona mas cai na msg d erro, vou colocar td meu código aqui
Autor.js

Livro.js

autorRoutes.js

livrosRoutes.js

autorController.js

livroController.js

Garanta sua matrícula hoje e ganhe + 2 meses grátis

Continue sua jornada tech com ainda mais tempo para aprender e evoluir

Quero aproveitar agora
1 resposta

Olá, Kaue! Como vai?

O erro Cannot read properties of null (reading '_id') ocorre quando o código tenta acessar o _id de um autor que não foi encontrado no banco de dados. Isso pode acontecer se o ID do autor passado na requisição não existir.

Aqui estão algumas sugestões para resolver o problema:

  1. Verifique o ID do Autor: Certifique-se de que o ID do autor que está sendo passado na requisição realmente existe no banco de dados. Você pode fazer isso verificando diretamente no banco ou usando uma ferramenta como o MongoDB Compass.

  2. Validação do Autor: Antes de tentar acessar o _id do autor, verifique se o autor foi encontrado. Você pode adicionar uma verificação no seu código:

    const autorEncontrado = await autor.findById(novoLivro.autor);
    if (!autorEncontrado) {
      return res.status(404).json({ message: "Autor não encontrado" });
    }
    
  3. Mensagem de Erro: Para melhorar as mensagens de erro, você pode ajustar o bloco catch para fornecer mais detalhes sobre o erro:

    catch (erro) {
      res.status(500).json({ message: `Erro interno: ${erro.message} - Falha ao cadastrar livro` });
    }
    
  4. Verifique a Importação: No livroController.js, certifique-se de que o autor está sendo importado corretamente:

    import { autor } from "../models/Autor.js";
    

Espero ter ajudado e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.