在Schema.pre中传递值('update')

时间:2018-03-08 20:02:38

标签: javascript node.js mongodb

我的更新功能是

 User.update({_id: data._id}, {$set: {password: req.body.newpassword}})
        .then(data => {
          res.json(data)
        })
        .catch(err => {
          res.status(400).json(err);
        });

我的pre中间件定义为

UserSchema.pre('update',function (next) {

 console.log(this.password)  //it shows undefined

});

我不知道如何使用这个,以便我可以在password中间件中传递我的pre字段,我还想要散列

感谢名单。

1 个答案:

答案 0 :(得分:1)

您可以使用node.js crypto模块。

var crypto = require('crypto');

var UserSchema = new mongoose.Schema({ password: 'string' });

UserSchema.pre('update',(next) => {
    this.password = crypto.createHash('md5').update(this.password).digest('hex');
    next();
});

var User = mongoose.model('User', UserSchema);
User.update({_id: data._id}, {$set: {password: req.body.newpassword}})
    .then(data => {
      res.json(data)
    })
    .catch(err => {
      res.status(400).json(err);
    });