我添加了一个钩子来获取用户模型的实例以加密用户密码。但我无法获取模型的实例。
这是我的代码
regUsers.pre('save',(next)=>{
// get access to this user model
const user = this;
// generate salt the run call back
bcrypt.genSalt(10,(err,salt)=>{
if(err){ return next(err);}
// hash(encrypt) our password using 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();
});
})
});
我得到一个Type错误 TypeError:无法读取未定义的属性'password'。 为什么我得到这个erorr的任何理由?以及如何克服这个问题?
答案 0 :(得分:1)
这是因为您正在使用arrow function,尝试使用经典函数表达式。
可能Mongoose使用call()
或apply()
(或类似的东西)调用该回调来为其提供所需的上下文(在这种情况下,是对正在更新的文档的引用)。