gpt4 book ai didi

node.js - Mongoose 前/后中间件无法使用 ES6 访问 [this] 实例

转载 作者:IT老高 更新时间:2023-10-28 23:06:59 30 4
gpt4 key购买 nike

我进退两难,尝试使用 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();
});

问题:*有没有办法访问 this 实例?

最佳答案

粗箭头符号 (=>) 在这种情况下没有用。相反,只需使用老式的匿名函数表示法:

UserSchema.pre('save', function(next) {
...
});

原因是胖箭头在词法上将函数绑定(bind)到当前范围(更多关于 here ,但是 TL;DR:胖箭头表示法并不是通用的快捷表示法,而是专门用于创建词法绑定(bind)函数),而函数 应该 在 Mongoose 提供的范围内调用。

关于node.js - Mongoose 前/后中间件无法使用 ES6 访问 [this] 实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36957440/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com