如何在schema.pre()方法中获取特定字段?

时间:2017-08-10 21:00:48

标签: node.js mongoose mongoose-schema

我使用带有mongoose的nodejs,我希望在更新文档之前获取用户密码。我在更新之前使用schema.pre()方法进行了调用,但我不知道如何在此方法中获取用户密码。

这是我的UserSchema.pre()方法:

UserSchema.pre('update', function(next){
   var user = this;
   next();
});

和我的架构:

var UserSchema = new mongoose.Schema({

email: {
    type: String,
    required: true,
    minlength: 1,
    trim: true,
    unique: true
},
password: {
    type: String,
    required: true,
    minlength: 6
},
firstName: {
    type: String,
    required: true,
    minlength: 1,
    trim: true
},
lastName: {
    type: String,
    required: true,
    minlength: 1,
    trim: true
},
tokens: [{
    access:{
        type: String,
        required: true
    },
    token:{
        type: String,
        required: true
    }
}]
});

希望你能帮助我, 谢谢。

2 个答案:

答案 0 :(得分:0)

UserSchema.pre('update', function(next){
   var user = this;
   console.log(user._update); // contains the fields to be be updated
   next();
});

在您更新单个用户时,我建议您使用pre findOneAndUpdate挂钩。

答案 1 :(得分:0)

这对我有用,

UserSchema.pre('update', function(next){
   var user = this['_doc'];
   console.log(user); // contains the fields to be be updated
   next();
});