因为bcrypt.hash(data, salt, progress, cb)是需要四个参数
UserSchema.pre('save', function (next) {
if (!this.isModified('password')) return next()
// 密码哈希加盐加密
bcrypt.genSalt(SALT_WORK_FACTOR, (err, salt) => {
if (err) return next(err)
bcrypt.hash(this.password, salt, null, (error, hash) => {
if (error) return next(error)
this.password = hash
next()
})
})
})
在开始我只写了
bcrypt.hash(this.password, salt, (error, hash) => {
if (error) return next(error)
this.password = hash
next()
)
在hash函数中是这样描述的
The documentation is unclear on this: it states that data, salt and cb
are required, which implies that progress isn’t, but without it you’ll
get the error. Pass a null if you don’t care about tracking progress:
[html] view plain copy
可以看出,数据(data),盐(salt)和cb是必须的,所以意味这进度(progress)不是,但是缺少它却会报错,所以我们可以将它设置为null