2017-02-15 10 views
1

Как обновить запись в методе модели, как «узел ОРМ-2» В «Sequelize»Sequelize ЯШ: обновление/сохранить в методе модели

В ОРМ-2, Просто используйте this.save()

var users = db.define('users', 
    { 
     id   : { type: 'serial', key: true }, 
     username : { type: 'text', size: 25, unique: true, required: true }, 
     balance  : { type: 'integer', defaultValue: 0 }, 
    }, { 
     timestamp: true, 
     methods: { 
      addBalance: function (howMany) { 
       howMany = Math.abs(howMany); 
       this.balance += howMany; 
       this.save(function (err) { 
        console.log("added money to "+this.username+" : "+howMany); 
       }); 
      } 
     } 
    }); 

Но в Sequelize, я не знаю, пока

var wallet = sequelize.define('wallet', { 
    balance : { type: Sequelize.INTEGER, defaultValue: 0, validate: { min: 0 } } 
}, { 
    timestamps: true, 
    classMethods: { 
     addBalance: function (howMany) { 
      howMany = Math.abs(howMany); 
      this.balance += howMany; 
      //UPDATE Or SAVE HERE... 
     } 
    } 
}); 

ли это иметь простую команду или предпочитаете другие методы?

ответ

0

Вы должны поместить метод addBalance внутри instanceMethods, а не в classMethods, потому что вы хотите работать на одном экземпляре указанной модели

instanceMethods: { 
    addBalance: function(howMany) { 
     howMany = Math.abs(howMany); 
     return this.set('balance', this.get('balance') + howMany).save(); 
    } 
} 

Этот метод вернет Promise разрешающие текущего экземпляра модели.

EDIT

Даже лучшим решением было бы использовать instance.increment методу

addBalance: function(howMany) { 
    howMany = Math.abs(howMany); 
    return this.increment('balance', { by: howMany }); 
} 

Он вернется так же, как выше вариант.

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

  • Нет связанных вопросов^_^