我有三个模型,程序(程序),层(Tier),商品(Offer)。一个程序可以有多个层,一个层可以有多个提供。所以我的程序有一系列层,相应的层可以有一系列的报价。现在我尝试按如下方式填充程序:
var Program = mongoose.model('Program');
var Offer = mongoose.model('Offer');
var Tier = mongoose.model('Tier');
Program.findOne({
_id: p_id
}).populate('tiers').exec(function(err, docs){
var opts = {
path: 'tiers.offers'
}
Program.populate(docs, opts, function(err, docs){
console.log('populated');
// var s = require('util').inspect(docs, {depth : null})
console.log(docs);
console.log(docs.tiers[0]); //Printing complete tier information
console.log(docs.tiers[0].offers[0]) //Just printing Object ID, not taking data from offers table
})
})
问题是它只是填充层而不是提供。我该怎么走得更深?相应的例子在这里:
答案 0 :(得分:1)
我有类似的问题,我有一首混音(下一首歌)和艺术家。在这里,我首先找到了这首歌的名字,然后我填写下一首歌曲以及他们的艺术家,接下来的歌曲我填充歌曲和艺术家信息。
希望它有所帮助。
Song.find({songName: req.params.id})
.lean()
.populate({ path: 'songMixs songArtist' })
.exec(function(err, docs) {
var options = {
path: 'songMixs.nextSong',
model: 'Song'
};
if (err) return res.json(500);
Song.populate(docs, options, function (err, projects) {
var options2 = {
path: 'songMixs.nextSong.songArtist',
model: 'Artist'
};
Artist.populate(docs, options2, function (err, projects) {
res.json(projects);
});
//res.json(projects);
});
});