Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Else if de validação não é acessado

Ao fazer o post vazio no Postman sempre aparece a mensagem "Erro interno no servidor" e não a mensagem Os seguinte erros foram encontrados: ${mensagensErro} do else if. Isto é, ao fazer a requisição não é feita a validação como é mostrada na aula. Gostaria de ajuda para resolver este problema.

manipuladorDeErros.js

/* eslint-disable no-unused-vars */
import mongoose from "mongoose";

function manipuladorDeErros (erro, req, res, next) {
  if (erro instanceof mongoose.Error.CastError) {
    res.status(400).send({message: "Um ou mais dados fornecidos estão incorretos."});
  } else if (erro instanceof mongoose.Error.ValidationError) {
    const mensagensErro = Object.values(erro.errors)
      .map(erro => erro.message)
      .join("; ");

    res.status(400).send({ message: `Os seguinte erros foram encontrados: ${mensagensErro}` });
  } 
  else { 
    res.status(500).send({message: "Erro interno de servidor."});
  } 
}

export default manipuladorDeErros;

Autor.js

import mongoose from "mongoose";

const autorSchema = new mongoose.Schema(
  {
    id: {type: String},
    nome: {
      type: String, 
      required: [true, "O nome do(a) autor(a) é obrigatório"]},
    nacionalidade: {type: String}
  },
  {
    versionKey: false
  }
);

const autores = mongoose.model("autores", autorSchema);

export default autores;

autoresController.js

  static cadastrarAutor = async (req, res, next) => {
    try {
      let autor = new autores(req.body);
  
      const autorResultado = await autor.save();
  
      res.status(201).send(autorResultado.toJSON());
    } catch (erro) {
      next(erro);
    }
  };
2 respostas

Outra informação: observei que está a resposta que sempre retorna:

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Contudo, notei que se por acaso eu mude a mensagem para, por exemplo, "Erro encontrado", sempre retorna a string"Erro interno de servidor". Isso pode acontecer no Postman? Pode ser algum problema de cache?

solução!

Já descobri o erro. Esqueci de colocar o Manipulador de Erros no app.js