Node.js 猫鼬的多层次种群不起作用
我有三个模型,程序(Program),层次(Tier),优惠(Offer)。一个计划可以有多个层次,一个层次可以有多个优惠。因此,我的程序有一系列的层,相应地,一个层可以有一系列的优惠。现在,我尝试按如下方式填充程序:Node.js 猫鼬的多层次种群不起作用,node.js,mongodb,mongoose,Node.js,Mongodb,Mongoose,我有三个模型,程序(Program),层次(Tier),优惠(Offer)。一个计划可以有多个层次,一个层次可以有多个优惠。因此,我的程序有一系列的层,相应地,一个层可以有一系列的优惠。现在,我尝试按如下方式填充程序: var Program = mongoose.model('Program'); var Offer = mongoose.model('Offer'); var Tier = mongoose.model('Tier'); Program.findOne({
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
})
})
问题是它只是填充层,而不是提供。我怎样才能更深入?相应的示例如下:
我也遇到了类似的问题,我有一首歌有混音(下一首歌)也有艺术家。在这里,我首先按名称查找歌曲,然后填充下一首歌曲及其艺术家,在下一首歌曲上填充歌曲以及艺术家信息 希望能有帮助
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);
});
});
这一行,.populate({path:'songMixs songastist'})
真的帮助我理解了如何一次填充两条路径……非常感谢!