Olá, Eduardo! Parece que você está com dúvidas sobre o Middleware de erro, correto? Vamos lá!
O middleware de erro que você criou está correto e deve funcionar como esperado. Ele será ativado sempre que um erro for passado para a função next()
, que é exatamente o que você está fazendo no método buscaLivrosId
quando um erro é capturado no bloco catch
.
Agora, se você está tendo problemas para ver o erro específico, pode ser porque o erro que está sendo gerado não é uma instância de mongoose.Error.CastError
. Se o erro não for dessa classe, o middleware sempre retornará "Erro interno de servidor", como definido no bloco else
do seu middleware.
Para ver o erro específico, você pode adicionar um console.log(erro)
antes do bloco if
no seu middleware. Isso irá imprimir o erro no console sempre que um erro for capturado, o que pode te ajudar a entender melhor o que está acontecendo.
Aqui está um exemplo de como você pode fazer isso:
app.use((erro, req, res, next) => {
console.log(erro); // imprime o erro no console
if (erro instanceof mongoose.Error.CastError) {
res.status(400).send({message: "Um ou mais dados fornecidos estão incorretos."})
} else {
res.status(500).send({message: "Erro interno de servidor."})
}
});
Espero ter entendido a sua dúvida, e conseguidoi esclarecer. Lembre-se, essa é apenas uma sugestão para depuração e não deve ser usada em um ambiente de produção, pois pode expor informações sensíveis.
Qualquer coisa manda aqui. Bons estudos!