2014-11-27 5 views
0

Я пытаюсь использовать mongoose populate для возможности возврата одного композитного документа. Категории и вопросы расширены. Массив ответов в вопросах не расширяется. Вот что я делалБольше, чем 2 уровня населения с mongoose

summarySchema.statics.loadFull = function(options, callback){ 
    var self = this; 
    self.findOne(options).populate([{ 
     path: 'categories' 
    }]) 
    .exec(function(err, res){ 
     if(err || !res) return callback(err, res); 
     self.populate(res, [{ 
      path: 'categories.questions', 
      model: 'Question' 
     }], function(err, res){ 
      if(err || !res || !res.length) return callback(err, res); 
      self.populate(res, [{ 
       path : 'categories.questions.answers', 
       model: 'Answer' 
      }], function(err, res){ 
       callback(err, res); 
      }); 
     }); 
    }); 
}; 

Существует очевидная ошибка, которую я делаю или мангуст не поддерживает более 2 уровня населения.

FYI, структура подобна

summary {categories : [{type: mongoose.Schema.Types.ObjectId, ref: 'Category'}]} 
category {questions : [{type: mongoose.Schema.Types.ObjectId, ref: 'Question'}]} 
question {answers : [{type: mongoose.Schema.Types.ObjectId, ref: 'Answer'}]} 

ответ

0

я делал глупую ошибку, которая не может быть очевидным, если вы не видите возвращаемые данные. Я не должен проверять длину объекта, который не является массивом или строкой. Я потерял возвращаемые значения. :)