Заполнение массива ObjectId в Mongoose 3.8

Я пытаюсь заполнить массив всей информацией о другой коллекции, и я не могу ее получить.

У меня есть 2 коллекции: пользователи и экзамены, и я хочу показать ответ json, содержащий информацию о пользователе и экзамены, купленные пользователем.

Моя проблема в том, что я не знаю, как заполнять экзамены, приобретенные с помощью информации о зачисленных экзаменах (имя, номер предложения, год экзамена...) ¿Как я могу это сделать?

Это мой окончательный результат

И это мой код

// USER MODEL

var mongoose     = require('mongoose');
var Schema       = mongoose.Schema;

// Schemas

var userSchema   = new Schema({
    name : String,
    hobbies: {
        name : String,
        ubicacion:String
    },
    examsPurchased : [new Schema({
        exams: {type: Schema.ObjectId, ref: 'exams'}
    })]
});

module.exports = mongoose.model('users', userSchema);

// EXAM MODEL

var mongoose     = require('mongoose');
var Schema       = mongoose.Schema;

// Schemas
var examSchema   = new Schema({
    year        : Number,
    count       : Number
});

module.exports = mongoose.model('exams', examSchema);

// ROUTES
router.route('/user/:user_id').get(function(req,res){
    user
    .findById(req.params.user_id)
    .populate('examsPurchased._id')
    .exec(function (err, completeUser) {
      if(err) {
        console.log(err);
      }
      res.send(completeUser);
    });
});

1 ответ

Решение

Проблема в том, что вы не заполняете хорошее поле:

// ROUTES
router.route('/user/:user_id').get(function(req,res){
    user
    .findById(req.params.user_id)
    .populate('examsPurchased.exams', 'year count') // Line changed
    .exec(function (err, completeUser) {
      if(err) {
        console.log(err);
      }
      res.send(completeUser);
    });
});
Другие вопросы по тегам