在字段的验证中,我得到this
作为undefined
,但是即使我在Sequelize.define
的第三个参数中设置使用documentation描述的其他字段,也会发生同样的情况
module.exports = function (sequelize, DataTypes) {
const User = sequelize.define(
'User',
{...}, //all fields here
{
freezeTableName: true,
paranoid: true,
validate: {
isPasswordRepeated: () => {
console.log(this.id, this.password);
}
}
}
);
}
在此代码中,console.log
输出undefined undefined
。如果我使用密码的验证,仍然为undefined
获得this.id
,但通过参数接收密码。
我一直在寻找解决方案,但这似乎是一个罕见的问题,仅在GitHub上找到this abandoned issue。还有另一种获取this.id
的方法吗?
Sequelize版本4.42.0
答案 0 :(得分:2)
您不了解“ this”的上下文。
在函数内部,此值取决于函数的方式 叫。
...
由于以下代码不在严格模式下,并且由于 这不是由调用设置的,它将默认为全局对象,即 是浏览器中的窗口。
...
但是,在严格模式下,如果在输入时未设置此值 执行上下文,它保持未定义状态。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/this#Function_context