我陷入两难境地,尝试使用pre中间件向mongoose模型添加一些预逻辑,并且不能this像往常一样访问实例.
UserSchema.pre('save', next => {
console.log(this); // logs out empty object {}
let hash = crypto.createHash('sha256');
let password = this.password;
console.log("Hashing password, " + password);
hash.update(password);
this.password = hash.digest('hex');
next();
});
Run Code Online (Sandbox Code Playgroud)
问题:*有没有办法访问this实例?
rob*_*lep 30
胖箭头符号(=>)在这种情况下没用.相反,只需使用旧式的匿名函数表示法:
UserSchema.pre('save', function(next) {
...
});
Run Code Online (Sandbox Code Playgroud)
原因是胖箭头在词法上将函数绑定到当前范围(更多关于此处,但是TL; DR:胖箭头符号并不意味着是通用的快捷符号,它专门用于创建词法绑定函数),而函数应该在Mongoose提供的范围内调用.
| 归档时间: |
|
| 查看次数: |
1319 次 |
| 最近记录: |