【发布时间】:2016-12-26 14:35:44
【问题描述】:
我添加了一个钩子来获取用户模型的实例来加密用户密码。但是我无法获取模型的实例。
这是我的代码
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();
});
})
});
我收到一个类型错误 TypeError:无法读取未定义的属性“密码”。 为什么我得到这个错误的任何原因?以及如何克服?
【问题讨论】:
-
this指的是mongoose.Query..的实例。 -
@SunilBN 在这种情况下使用
document middleware,this是对正在更新的文档的引用,而不是对查询的引用。这里解释一下:mongoosejs.com/docs/middleware.html
标签: javascript node.js mongoose