填充猫鼬对象数组

时间:2014-10-01 04:42:00

标签: node.js express mongoose

我有一个像这样的猫鼬模型:

var ModuleSchema = new Schema({
systems: [{
    system: {
            type: Schema.ObjectId,
            ref: 'System'
        },
            quantity: {
            type: Number
        }
    }]
});

mongoose.model('Module', ModuleSchema);

基本上不会填充ModuleSchema.systems.$.system属性。 该属性属于对象数组中的对象。我已经尝试了所有东西来让它填充,但它不会发生。

我尝试使用以下语法进行填充,但不确定可能出现的问题,因为我仍然没有收回填充的System属性。

Module.findOne({project: pId}).sort('-created')
    .populate('systems.system')

1 个答案:

答案 0 :(得分:0)

它不起作用,因为系统不是系统的属性。你需要像

那样填充它
Module.findOne({project: pId}).sort('-created')
    .populate('systems.0.system').exec(function (err, doc){})

Module.findOne({project: pId}).sort('-created')
        .populate('systems.1.system').exec(function (err, doc){})

所以你应该有一个for循环并迭代它以填充所有文档。否则,您应该修改模型以使其更好地工作。

var ModuleSchema = new Schema({
systems: [{
    system: {
            type: Schema.ObjectId,
            ref: 'System'
        },
            quantity: {
            type: Number
        }
    }]
});

将您的模型更改为此,这将使您轻松。

 var ModuleSchema = new Schema({
        systems: {
           system: [{
                type: Schema.ObjectId,
                ref: 'System'
           }],
           quantity: {
           type: Number
        }

        }
    });