A mensagem que lista os erros de validação não funciona, nesse caso está sendo exibida a mensagem de Erro de Requisição ao invés de Erro de Validação quando não é colocado o título do livro ou da editora, meu código abaixo:
import RequisicaoIncorreta from "./RequisicaoIncorreta.js";
class ErroValidacao extends RequisicaoIncorreta {
constructor(erro) {
const mensagemDeErro = Object.values(erro.errors)
.map(erro => erro.message)
.join("; ");
super(`Os seguintes erros foram encontrados: ${mensagemDeErro}`);
}
}
export default ErroValidacao;
import ErroBase from "./ErroBase.js";
class RequisicaoIncorreta extends ErroBase {
constructor() {
super("Um ou mais dados fornecidos estão incorretos", 400);
}
}
export default RequisicaoIncorreta;
import mongoose from "mongoose";
import ErroBase from "../error/ErroBase.js";
import RequisicaoIncorreta from "../error/RequisicaoIncorreta.js";
import ErroValidacao from "../error/erroValidacao.js";
// eslint-disable-next-line no-unused-vars
function manipuladorDeErros(erro, req, res, next) {
if(erro instanceof mongoose.Error.CastError) {
new RequisicaoIncorreta().enviarResposta(res);
} else if(erro instanceof mongoose.Error.ValidationError) {
new ErroValidacao(erro).enviarResposta(res);
} else {
new ErroBase().enviarResposta(res);
}
}
export default manipuladorDeErros;