Node.js 猫鼬的多层次种群不起作用

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({

我有三个模型,程序(Program),层次(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
        })
    })
问题是它只是填充层,而不是提供。我怎样才能更深入?相应的示例如下:


我也遇到了类似的问题,我有一首歌有混音(下一首歌)也有艺术家。在这里,我首先按名称查找歌曲,然后填充下一首歌曲及其艺术家,在下一首歌曲上填充歌曲以及艺术家信息

希望能有帮助

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'})
真的帮助我理解了如何一次填充两条路径……非常感谢!