Model.findById возвращает неопределенное значение, когда я использую методы mon goose .populate.exe c - PullRequest
0 голосов
/ 20 апреля 2020

Я пытаюсь заполнить свою модель Question ответами и найти сообщество, используя его идентификатор, как показано:

router.get('/communities/:type/:id_community/:id_question' , (req , res)=>{
    console.log(req.params.id_question);
    PublicCommunity.findById(req.params.id_community , (err , foundCommunity)=>{
        if(err){
            console.log(err)
            res.redirect('back');
        }else{
            Question.findById(req.params.id_question).populate('answers').exec ((err2 , foundQuestion)=>{
                console.log(foundQuestion);
                seedAnswer(foundQuestion);
                if(err2){
                    console.log('err here');
                    console.log(err);
                    res.redirect('back');
                }else{

                    res.render('../views/publicCommunity/questions/show' , {type:req.params.type  ,question: foundQuestion , community: foundCommunity});
                }
            });
        }
    });
});

Схема вопроса:

let questionSchema = new mongoose.Schema ({
    title: String,
    text : String,
    comments:[{
        type : mongoose.Schema.Types.ObjectId,
        ref  : 'Comment'
    }],
    answers: [{
        type: mongoose.Schema.Types.ObjectId,
        ref:'Answer'
    }],
    date: {type: Date , default: Date.now},
    author: String
});

Когда я console.log(foundQuestion), возвращается неопределенное. Когда я не заполняю модель Question, она работает нормально, и foundQuestion имеет требуемое значение.

1 Ответ

0 голосов
/ 20 апреля 2020

В коде нет ничего плохого. Произошла орфографическая ошибка в названии коллекции. Таким образом, коллекция answers не была заполнена и возвращала null. После изменения названия коллекции все работает нормально.

...