Express 在sequelize instanceMethods中访问属性

Express 在sequelize instanceMethods中访问属性,express,sequelize.js,Express,Sequelize.js,我正在向sequelize模型添加一个实例方法。根据,我应该能够引用this.name,但我能看到的唯一值是this.dataValues.name。我没有理由相信高质量的文档是错误的。。。。但为什么会发生这种情况 此外,没有可用的setter或getter。this.getDataValue/this.setDataValue在getter/setter中工作,但在instanceMethods中不工作 我在网上找不到任何相关的例子——如果你知道一个项目读取(或者更好地说,写入)这些值,请将其

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

此外,没有可用的setter或getter。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 ??

        }
      }, ...
module.exports=(sequelize:sequelize,数据类型:数据类型)=>{
返回sequelize.define('User'{
名称:{type:DataTypes.STRING}
}, {
实例方法:{
myMethod:(值)=>{
//此.name未定义
//this.dataValues.name是否已定义??
}
}, ...

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

Typescript将其放在模块顶部:

var _this = this;
引用“_this”,而不是函数上下文中的引用--没有意识到这一点!只要我将其更改为传统的函数(){}语法,它就工作了。因此,如果您使用的是typescript,您可以执行以下操作:

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

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