我使用Mongoose.js並且無法解決3級別層次結構文檔的問題。貓鼬填充嵌入式
有兩種方法可以做到這一點。
First - without refs。
C = new Schema({
'title': String,
});
B = new Schema({
'title': String,
'c': [C]
});
A = new Schema({
'title': String,
'b': [B]
});
我需要顯示C記錄。我如何填充/找到它,只知道C的_id?
我嘗試使用:
A.findOne({'b.c._id': req.params.c_id}, function(err, a){
console.log(a);
});
但我不知道如何從returnet得到一個對象只C對象,我需要。
二如果與裁判工作:
C = new Schema({
'title': String,
});
B = new Schema({
'title': String,
'c': [{ type: Schema.Types.ObjectId, ref: 'C' }]
});
A = new Schema({
'title': String,
'b': [{ type: Schema.Types.ObjectId, ref: 'B' }]
});
如何填充所有B,C的記錄得到的層次結構?
我嘗試使用這樣的:
A
.find({})
.populate('b')
.populate('b.c')
.exec(function(err, a){
a.forEach(function(single_a){
console.log('- ' + single_a.title);
single_a.b.forEach(function(single_b){
console.log('-- ' + single_b.title);
single_b.c.forEach(function(single_c){
console.log('--- ' + single_c.title);
});
});
});
});
但它會返回未定義single_c.title。我有辦法填充它嗎?
謝謝。
將是一件好事,現在,這是支持選擇一個新的接受的答案。 – JohnnyHK