userSchema.pre不起作用可能是由于以下几个原因:
const bcrypt = require('bcrypt');
userSchema.pre('save', async function(next) {
try {
// 只有在密码被修改时才进行哈希处理
if (!this.isModified('password')) {
return next();
}
// 生成盐并将密码哈希化
const salt = await bcrypt.genSalt(10);
const hashedPassword = await bcrypt.hash(this.password, salt);
// 将哈希后的密码保存到数据库
this.password = hashedPassword;
next();
} catch (error) {
next(error);
}
});
在上述示例中,我们使用bcrypt库生成一个盐,并使用盐对密码进行哈希处理。然后,将哈希后的密码保存到数据库中。
总结:在保存密码到mongodb数据库之前对其进行哈希处理,你需要正确地定义userSchema,并在保存之前使用合适的哈希算法对密码进行处理。确保你的代码逻辑正确,并且数据库连接正常。
领取专属 10元无门槛券
手把手带您无忧上云