Есть ли лучший способ избежать дублирования обратных вызовов жизненного цикла?

Waterline позволяет выполнять некоторые обратные вызовы жизненного цикла моделей, как указано ниже...

  • перед проверкой / fn(values, cb)
  • beforeCreate / fn(values, cb)
  • afterCreate / fn(newlyInsertedRecord, cb)
  • перед проверкой / fn(valuesToUpdate, cb)
  • перед обновлением / fn(valuesToUpdate, cb)
  • afterUpdate / fn(updatedRecord, cb)
  • beforeDestroy / fn(criteria, cb)
  • afterDestroy / fn(cb)

Однако что, если я хочу принять меры перед созданием и обновлением?

У Rails был beforeSave, который отлично подходил для этого. Есть ли что-то подобное в Sailes.js?

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


person InternalFX    schedule 22.04.2014    source источник


Ответы (1)


Вы можете позвонить beforeUpdate из beforeCreate или наоборот:

beforeCreate: function(values, cb) {
    // Forward to the model's beforeUpdate method
    return User.beforeUpdate(values, cb);
},

beforeUpdate: function(valuesToUpdate, cb) {
    ...
}

Просто имейте в виду, что значения, отправленные через вызов update, скорее всего, будут отличаться от тех, которые отправлены в create; например, не полагайтесь на доступное значение экземпляра id!

person sgress454    schedule 22.04.2014
comment
Спасибо, Скотт, есть ли планы добавить некоторые другие обратные вызовы в стиле Rails, такие как save? - person InternalFX; 22.04.2014