mongodb - Mongoose model.pre('save'), isModified, bcrypt
问题描述
我想知道下面的代码是如何工作的。在我看来,在给定的代码中 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);
}
});
解决方案
isModified
仅当您更改密码时才会返回 true。
因此,如果用户进行密码重置/更改或者他们是第一次设置它,这将被触发。
例如,如果用户的名称被更改,它将不会被触发。
您可以在此处阅读更多信息isModified
:https ://mongoosejs.com/docs/api.html#document_Document-isModified
推荐阅读
- c# - 使用 -AllUserConnections 参数获取 Windows VPN 适配器
- python - 通过将现有列乘以十进制数在熊猫中创建新列
- python - Scrapy - 如何在没有“下一步”按钮的情况下管理分页?
- angular - 在订阅者Angular 8中停止循环
- vue.js - 如何在 vuejs 中正确添加图像
- python - 使用列表列表在 pandas 中创建 DataFrame
- reactjs - 在 ReactJS 中将 props 传递给组件
- c# - C# OrderBy 方法如何按包含哈士奇代码的字符对对象进行排序?
- java - 尝试创建一个活动,当单击字体按钮时,fontfamily 应该更改
- reactjs - 如何解决“无效的 Hook Call”?