Quando abri o codigo no github, percebi uma diferença que não foi comentado ate agora, os metodos populate() e exec()....
no arquivo livroController do curso anterior esta :
static async listarLivros (req, res) {
try {
const listaLivros = await livro.find({});
res.status(200).json(listaLivros);
} catch (erro) {
res.status(500).json({ message: `${erro.message} - falha na requisição` });
}
};
static async listarLivroPorId (req, res) {
try {
const id = req.params.id;
const livroEncontrado = await livro.findById(id);
res.status(200).json(livroEncontrado);
} catch (erro) {
res.status(500).json({ message: `${erro.message} - falha na requisição do livro` });
}
};
Enquanto no curso atual esta :
static listarLivros = async (req, res) => {
try {
const livrosResultado = await livros.find()
.populate("autor")
.exec();
res.status(200).json(livrosResultado);
} catch (erro) {
res.status(500).json({ message: "Erro interno no servidor" });
}
};
static listarLivroPorId = async (req, res) => {
try {
const id = req.params.id;
const livroResultados = await livros.findById(id)
.populate("autor", "nome")
.exec();
res.status(200).send(livroResultados);
} catch (erro) {
res.status(400).send({message: `${erro.message} - Id do livro não localizado.`});
}
};
O que é, oque faz esses metodos ?!?! E por que a mudança do codigo ja que "atual" seria uma continuação do anterior ?