TypeError:this.isModified不是一个函数

时间:2018-09-18 12:20:45

标签: javascript node.js ecmascript-6 ecmascript-5

我面临一个奇怪的问题。

下面的代码抛出错误,并且使用箭头功能

UserSchema.pre('save', next => {
  const SALT_FACTOR = 5;

  if (!this.isModified('password')) return next();

  bcrypt.genSalt(SALT_FACTOR, (err, salt) => {
    if (err) return next(err);

    bcrypt.hash(this.password, salt, null, (err, hash) => {
      if (err) return next(err);
      this.password = hash;
      next();
    });
  });
});

下面的代码工作正常,并且使用正常功能。

UserSchema.pre('save', function(next) {
  const SALT_FACTOR = 5;

  if (!this.isModified('password')) return next();

  bcrypt.genSalt(SALT_FACTOR, (err, salt) => {
    if (err) return next(err);

    bcrypt.hash(this.password, salt, null, (err, hash) => {
      if (err) return next(err);
      this.password = hash;
      next();
    });
  });
});

任何人都有一个想法,为什么箭头功能会抛出错误?

  

TypeError:this.isModified不是函数

1 个答案:

答案 0 :(得分:0)

您可能要引用以下内容:https://stackoverflow.com/a/44080978/1971378gist:定义时,箭头功能会密封this