我正在尝试使用mongoose populate来返回一个复合文档。类别和问题可以很好地扩展。问题中的答案数组未展开。这就是我一直在做的事情
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个以上的人口。
仅供参考,结构就像
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 :(得分:0)
我犯了一个愚蠢的错误,除非你看到返回的数据,否则可能并不明显。我不应该检查不是数组或字符串的对象的长度。我把返回值弄糊涂了。 :)