我在Mongoose中进行嵌套填充时遇到'TypeError:无法调用'undefined'的方法'路径'

时间:2013-07-03 07:42:47

标签: node.js mongoose

我的类别架构是:

var CategorySchema = new Schema({
  subcategories:[{type : Schema.ObjectId, ref : 'Category', null: true}],
  parent: {type : Schema.ObjectId, ref : 'Category', null: true},
  products:[{type : Schema.ObjectId, ref : 'Product'}]
})

当我尝试制作如下所示的嵌套填充时,我得到“无法调用未定义的方法'路径'

list: function (options, cb) {
    var criteria = options.criteria || {}
      , Category = this

    this.find(criteria)
      .populate('subcategories')
      .exec(function(err,docs){
        if(err){
          console.log(err.message);
          cb(err);
        }
        var opts = [
              { path: 'subcategories.products' }
        ];
        Category.populate(docs, opts, function(err, docs2) {
          if(err){
                cb(err);
          }          
          cb(docs2);
        })

     })
  }

我哪里错了?

1 个答案:

答案 0 :(得分:1)

var opts = [
  { path: 'subcategories.products' }
];
Category.populate(docs, opts, function(err, docs2) {

subcategories.productsCategory架构的未知路径,因此您需要更改用于填充的模型。以下两种方法中的任何一种都可以使用:

// 1
var opts = [
  { path: 'subcategories.products' }
];
Product.populate(docs, opts, function(err, docs2) {

// 2
var opts = [
  { path: 'subcategories.products', model: 'Product' }
];
Category.populate(docs, opts, function(err, docs2) {