Oi pessoal, eu fui implementar o erro 404 nos livros, exatamente igual fiz para autoresController. Em autores deu certo, mas em livros, quando eu mando um id inválido, ele me retorna 500. Eu estou só trocando o último número de um id existente, então esperava obter o erro 404. Aqui está meu código todo:
ATUALIZAÇÃO: eu não importei o erro, opa!
import livros from "../models/Livro.js";
class LivroController {
static listarLivros = async (req, res, next) => {
try {
const livrosResultado = await livros.find().populate("autor").exec();
res.status(200).json(livrosResultado);
} catch (erro) {
next(erro);
}
};
static listarLivroPorId = async (req, res, next) => {
try {
const id = req.params.id;
const livroResultado = await livros
.findById(id)
.populate("autor", "nome")
.exec();
if (livroResultado !== null) {
res.status(200).send(livroResultado);
} else {
next(new NaoEncontrado("Id do livro não localizado."));
}
} catch (erro) {
next(erro);
}
};
static cadastrarLivro = async (req, res, next) => {
try {
let livro = new livros(req.body);
const livroResultado = await livro.save();
res.status(201).send(livroResultado.toJSON());
} catch (erro) {
next(erro);
}
};
static atualizarLivro = async (req, res, next) => {
try {
const id = req.params.id;
const livroResultado = await livros.findByIdAndUpdate(id, {
$set: req.body,
});
if (livroResultado !== null) {
res.status(200).send(livroResultado);
} else {
next(new NaoEncontrado("Id do livro não localizado."));
}
} catch (erro) {
next(erro);
}
};
static excluirLivro = async (req, res, next) => {
try {
const id = req.params.id;
const livroResultado = await livros.findByIdAndDelete(id);
if (livroResultado !== null) {
res.status(200).send({ message: "Livro removido com sucesso" });
} else {
next(new NaoEncontrado("Id do livro não localizado."));
}
} catch (erro) {
next(erro);
}
};
static listarLivroPorEditora = async (req, res, next) => {
try {
const editora = req.query.editora;
const livrosResultado = await livros.find({ editora: editora });
res.status(200).send(livrosResultado);
} catch (erro) {
next(erro);
}
};
}
export default LivroController;