Mongoose预保存挂钩的更改没有反映在db中

时间:2017-07-30 09:21:17

标签: node.js mongoose

我正在更新mongoose预保存挂钩中的必填字段procedureid的值。但是,这并没有反映在我的MongoDB中。

我在这里做错了什么?

const collection = 'hospital_doctor_details';
var hospitalDoctorSchema = new Schema({

    Treatment: [{        
        procedureid: { type: Number, required: true},        
    }],
    updated_at: { type: Date, required: true, default: Date.now }
});


hospitalDoctorSchema.pre('save', function (next) {

    var self = this;
    var treatmentcnt =parseInt( this.Treatment.length)-1
    self.Treatment[treatmentcnt].procedureid= 1234;

   next();

});

//create collection.
module.exports.hospitalModel = mongoose.model(collection, hospitalDoctorSchema);

1 个答案:

答案 0 :(得分:0)

preSave中,您正在尝试访问一个数组,我从您的评论中了解到的数据在创建时不存在。因此,您需要将空数组分配给Treatment,然后推送包含procedureid的对象。

hospitalDoctorSchema.pre('save', function (next) {
    this.Treatment = this.Treatment? this.Treatment : []; 
    this.Treatment.push({
        procedureid : 1234
    });
   next();
});

这会在后续保存(Treatmentfind)上将更多对象推送到save数组,这似乎就是您想要的。