Заполнение массива 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);
});
});