我想知道下面的代码如何工作。在我看来,在给定的代码中,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);
}
});
答案 0 :(得分:0)
isModified
仅在更改密码时返回true。
因此,如果用户进行密码重置/更改或他们是首次设置密码,则会触发此操作。
例如,如果用户名更改,则不会触发。
您可以在此处了解有关isModified
的更多信息:https://mongoosejs.com/docs/api.html#document_Document-isModified