访问sequelize instanceMethods中的属性

时间:2015-07-09 05:27:19

标签: express sequelize.js

我正在为续集模型添加实例方法。根据{{​​3}},我应该可以引用this.name,但我能看到的唯一值是this.dataValues.name。我没有理由相信高质量的文档是错误的......但为什么会这样呢?

此外,没有可用的限制器或吸气剂。 this.getDataValue / 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 ??

        }
      }, ...

1 个答案:

答案 0 :(得分:0)

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

Typescript将它放在模块的顶部:

var _this = this;

引用那个&#39; _this&#39;而不是函数上下文中的那个 - 没有意识到这一点!一旦我将其更改为传统的function(){}语法,它就会起作用。因此,如果你正在使用打字稿,你可以这样做:

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

}

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