Chamo o POST http://localhost:3000/livros/ com o JSON incompleto:
{
"editora": "tarara"
}
Aparece:
{
"mensagem": "Erro interno do servidor",
"status": 500
}
E era pra aparecer
{
os seguintes erros foram encontrados: ...
}
import RequisicaoIncorreta from "./RequisicaoIncorreta.js";
class ErroValidacao extends RequisicaoIncorreta{
constructor(erro){
const mensagensErro = Object.values(erro.errors)
.map(erro=> erro.message)
.join("; ");
super(`os seguintes erros foram encontrados: ${mensagensErro}`);
}
}
export default ErroValidacao;
import ErroBase from "./ErroBase.js";
class RequisicaoIncorreta extends ErroBase{
constructor(mensagem = "Um ou mais dados fornecidos estão incorretos"){
super(mensagem, 400);
}
}
export default RequisicaoIncorreta;
import { autor } from "../models/Autor.js";
import livro from "../models/Livro.js";
class LivroController {
static async listarLivros (req, res, next){
try{
const listaLivros = await livro.find({});
res.status(200).json(listaLivros);
}catch(erro){
next(erro);
}
}
static async listarLivrosPorId (req, res, next){
try{
const id = req.params.id;
const livroEncontrado = await livro.findById(id);
res.status(200).json(livroEncontrado);
}catch(erro){
next(erro);
}
}
static async cadastrarLivro (req, res, next){
const novoLivro = req.body;
try{
const autorEncontrado = await autor.findById(novoLivro.autor);
const livroCompleto = {...novoLivro, autor: { ...autorEncontrado._doc}};
const livroCriado = await livro.create(livroCompleto);
res.status(201).json({message: "criado com sucesso", livro : livroCriado});
} catch(erro){
next(erro);
}
}
static async atualizarLivro (req, res, next){
try{
const id = req.params.id;
await livro.findByIdAndUpdate(id, req.body);
res.status(200).json({message: "livro atualizado"});
}catch(erro){
next(erro);
}
}
static async excluirLivro (req, res, next){
try{
const id = req.params.id;
await livro.findByIdAndDelete(id);
res.status(200).json({message: "livro deletado"});
}catch (erro){
next(erro);
}
}
static async listarLivrosPorEditora(req, res, next){
const editora = req.query.editora;
try{
const livrosPorEditora = await livro.find({ editora: editora});
res.status(200).json(livrosPorEditora);
} catch(erro){
next(erro);
}
}
}
export default LivroController;
import mongoose from "mongoose";
import { autorSchema } from "./Autor.js";
const livroSchema = new mongoose.Schema({
id: { type: mongoose.Schema.Types.ObjectId },
titulo: { type: String, required: [true, "O titulo do livro é obrigatório"]},
editora: { type: String},
preco: { type: Number},
paginas: { type: Number},
autor: autorSchema
}, {versionKey: false});
const livro = mongoose.model("livros", livroSchema);
export default livro;