Falta pouco!

0 dias

0 horas

0 min

0 seg

1
resposta

Livros não dá erro 404 - opa, já descobri

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;

1 resposta

Oii, Maria.

Que bom que você conseguiu descobrir o erro. Irei finalizar o seu tópico, qualquer outra dúvida você pode abrir um novo tópico.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!