Bạn có thể sử dụng isModified trên trường 'mật khẩu' của bạn.
Tôi sử dụng nó theo cách này, chỉ chạy bcrypt nếu thuộc tính mật khẩu đã bị thay đổi:
UserSchema.pre('save', function (next) {
var user = this;
if (user.isModified('password')) {
bcrypt.genSalt(10, (err, salt) => {
bcrypt.hash(user.password, salt, (err, hash) => {
user.password = hash;
next();
});
});
} else {
next();
}
});