访问sequelize instanceMethods中的属性



我正在向序列化模型添加一个实例方法。根据文档,我应该能够引用this.name,但我能看到的唯一值是this. datvalues .name。我没有理由相信高质量的文档是错误的....但为什么会发生这种情况呢?

也没有可用的setter或getter。这一点。getdatvalue/this。setDataValue只能在getter/setter中使用,而不能在instanceMethods中使用。

我在网上找不到任何相关的样本-如果你知道一个项目可以读取(或者更好地,写)这些值,请将其添加到您的回复中。

module.exports = (sequelize: Sequelize, DataTypes: DataTypes) => {
  return sequelize.define<UserInstance, UserPojo>('User', {
      name: { type: DataTypes.STRING }
    }, {
      instanceMethods: {
        myMethod: (value) => {
          // this.name is undefined
          // this.dataValues.name IS defined ??
        }
      }, ...

正如你可能看到的,我使用的是Typescript。我只是检查了生成的Javascript,并立即发现了问题。

Typescript把它放在模块的顶部:

var _this = this;

并且引用了'_this',而不是函数上下文中的那个——没有意识到这一点!只要我将其更改为传统的function(){}语法,它就可以工作了。如果你使用typescript,你可以这样做:

myMethod: function(value: type) => void {
}

也就是说,您不必放弃输入参数和返回值。

最新更新