Olá Gustavo, tudo bem?
No exemplo do projeto, quando retiramos um ou dois caracteres do id, como você fez, a função findById identifica que o código informado não é um ObjectId, portanto cai no if referente ao erro e mostra a mensagem com o status 400, conforme implementado.
Como no else estamos enviando o status 200, realmente ele não faz a segunda verificação para ver se é um id válido porém não existente.
Para que contemple ambas as situações, pode fazer uma alteração no código conforme abaixo:
static listarLivroPorId = (req, res) => {
const id = req.params.id;
livros
.findById(id)
.populate("autor", "nome")
.exec((err, livros) => {
if (err) {
res.status(400).send({ message: `${err.message} - Id informado está fora do padrão.` });
} else if (livros == null) {
res.status(404).send('Id do livro não encontrado na base de dados');
} else {
res.status(200).send(livros);
}
});
};
Se a dúvida ainda persistir, não deixe de nos avisar por aqui.
Bons estudos! 😄
Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.Bons Estudos!