猫鼬model.pre('save'),isModified,bcrypt

时间:2018-10-23 16:44:06

标签: mongodb mongoose

我想知道下面的代码如何工作。在我看来,在给定的代码中,isModified方法将clearText和hashedPassword进行比较,因此它应该始终返回true

const userSchema = new mongoose.Schema({
password: {
    type: String,
    required: true
}
});

userSchema.pre("save", async function(next) {
  try {
      if (!this.isModified("password")) {
        return next();
      }
      let hashedPassword = await bcrypt.hash(this.password, 10);
      this.password = hashedPassword;
      return next();
  } catch (err) {
      return next(err);
 }
});

1 个答案:

答案 0 :(得分:0)

isModified仅在更改密码时返回true。

因此,如果用户进行密码重置/更改或他们是首次设置密码,则会触发此操作。

例如,如果用户名更改,则不会触发。

您可以在此处了解有关isModified的更多信息:https://mongoosejs.com/docs/api.html#document_Document-isModified