2015-07-09 4 views
0

Я добавляю метод экземпляра для модели sequelize. Согласно the documentation, я должен уметь ссылаться на this.name, но единственным значением, которое я вижу, является this.dataValues.name. У меня нет оснований полагать, что документация высокого качества неверна ... но почему это происходит?доступ к атрибутам в sequelize instanceMethods

Кроме того, нет доступных сеттеров или геттеров. this.getDataValue/this.setDataValue работает в getters/seters, но не в методах instance.

Я не могу найти подходящие образцы в сети - если вы знаете проект, который читает (или лучше, записывает) эти значения, добавьте это к вашему ответу.

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 ?? 

     } 
     }, ... 

ответ

0

Как вы, наверное, видите, я использую машинопись. Я просто изучил сгенерированный Javascript и сразу увидел проблему.

Машинопись ставит это в верхней части модуля:

var _this = this; 

И ссылки, которые «_this», а не тот, в контексте функции - не понял, что! Как только я изменил это на традиционный синтаксис функции() {}, он сработал. Таким образом, если вы используете машинопись, вы можете сделать это:

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

} 

То есть, вы не должны отказываться от печатая свои аргументы и возвращаемое значение.

Смежные вопросы