Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Erro ao tentar efetuar o populate

Quando tento popular a editora também esta me retornando o seguinte erro: Insira aqui a descrição dessa imagem para ajudar na acessibilidadeLivroController.js

import livros from "../models/Livro.js";


class LivroController{

    static listarLivros = (req, res) => {
        livros.find()
            .populate('Autor')
            .populate('Editoria')
            .exec((err,livros) => {
                if (err){
                    console.log('algo deu errado', err)
                }
                res.status(200).json(livros)
        });
    }


    static cadastrarLivro = (req, res) => {
        let livro = new livros(req.body);

        livro.save((err) => {
            if(err){
                res.status(500).send({message: `${err.message} -  falha a cadastrar o livro`})
            }else {
                res.status(201).send(livro.toJSON())
            }
        })
    };

    static atualizarLivro = (req, res) => {
        const id = req.params.id
        livros.findByIdAndUpdate(id, {$set: req.body}, (err) =>{
            if (!err){
                res.status(200).send({message:"livro alterado com sucesso "})
            }else {
                res.status(500).send({message: err.message}, console.log('algo deu errado na atualização'))
            }
        })
    }

    static buscaLivroID = (req, res) =>{
        const id = req.params.id
        livros.findById(id)
            .populate("Autor", 'nome')
            .exec((err, livros) =>{
                if(!err){
                    res.status(200).send(livros)
                }else {
                res.status(400).send({message: err.message})
            }
        })
    }

    static excluirLivro = (req, res) =>{
        const id = req.params.id

        livros.findByIdAndDelete(id, (err) => {
            if(!err){
                res.status(200).send({message: "Livro removido com sucesso"})
            } else{
                res.status(500).send({message: err.message})
            }
        })
    }
}

export default LivroController;

Models/ livro.js

import mongoose from "mongoose";

const livroSchema = new mongoose.Schema(
    {
        id: {type: String},
        nome: {type: String, required: true},
        Autor: {type: mongoose.Schema.Types.ObjectId, ref: 'autores', required: true},
        Editoria: {type: mongoose.Schema.Types.ObjectId, ref: 'editoras', required: true},
        Paginas: {type: Number}

    }
);

const livros = mongoose.model('livros', livroSchema);

export default livros;
1 resposta
solução!

Erro de digitação, em editora o Schema se chama editora e não editoras

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software