以下是保存用户时pre
挂钩中的一些es5代码:
// On Save Hook, encrypt password
// Before saving a model, run this function
userSchema.pre('save', function(next) {
// get access to the user model
const user = this;
// generate a salt then run callback
bcrypt.genSalt(10, function(err, salt) {
if (err) { return next(err); }
// hash (encrypt) our password using the salt
bcrypt.hash(user.password, salt, null, function(err, hash) {
if (err) { return next(err); }
// overwrite plain text password with encrypted password
user.password = hash;
next();
});
});
});
以下是相同代码的es6
版本:
userSchema.pre('save', (next) => {
// get access to the user model
const user = this;
// generate a salt then run callback
bcrypt.genSalt(10, (err, salt) => {
if (err) { return next(err); }
// hash (encrypt) our password using the salt
bcrypt.hash(user.password, salt, null, (err, hash) => {
if (err) { return next(err); }
// overwrite plain text password with encrypted password
user.password = hash;
next();
});
});
});
由于某种原因失败了,我不明白为什么!没有抛出任何错误。用户不会使用散列密码字符串保存 - 只是纯文本。
如果我只更改es6示例中的第一行代码:
userSchema.pre('save', function(next) {...
其余部分有效
我不明白这是 mongoose 挂钩工作方式的问题,还是我写 javascript 错了?