Mongoose:根据保存时的父字段值设置子文档字段值

时间:2014-07-22 18:50:10

标签: node.js mongodb mongoose

这几乎肯定会在其他地方有所涉及,但是:

如果我有一个带有嵌入式子文档的模式,如下所示:

var ChildSchema = new Schema ({
name : {
        type: String, 
        trim: true
},
user :{
    type: String, 
    trim: true
}
})

var ParentSchema = new Schema ({
name : {
     type: String,
     trim: true
},
child : [ChildSchema]
})

如何在同一个.save()动作中将ParentSchema的名称保存到ParentSchema.name和ChildSchema.name?以下内容根本不起作用。

ChildSchema.pre('save', function(next){
this.name = ParentSchema.name;
next();
});

1 个答案:

答案 0 :(得分:1)

您可以通过将中间件移动到有权访问自身及其子级的ParentSchema来实现此目的:

ParentSchema.pre('save', function(next){
    var parent = this;
    this.child.forEach(function(child) {
        child.name = parent.name;
    });
    next();
});