为了在将对象保存到MongoDB之前对密码进行哈希,我使用了Mongoose自带的pre-save hook。但是在更新期间如何正确地处理哈希呢?
我尝试通过pre-update hook来解决这个问题,但是这有一些显著的缺点,比如它绕过了模型验证(例如密码长度)。
这是我的方法(简化版):
那么,解决这个问题的首选方法是什么?
我尝试通过pre-update hook来解决这个问题,但是这有一些显著的缺点,比如它绕过了模型验证(例如密码长度)。
这是我的方法(简化版):
userSchema.pre('findOneAndUpdate', function (next) {
let query = this;
let update = query.getUpdate();
if (!update.password) {
return next();
}
hashPassword(update.password, function (err, hash) {
//handle error or go on...
//e.g update.password = hash;
});
});
那么,解决这个问题的首选方法是什么?