有没有更好的方法来避免重复的生命周期回调?

时间:2014-04-22 17:37:41

标签: node.js sails.js waterline

Waterline允许在下面列出的模型上进行一些生命周期回调...

  • beforeValidation / fn(values,cb)
  • beforeCreate / fn(values,cb)
  • afterCreate / fn(newlyInsertedRecord,cb)
  • beforeValidation / fn(valuesToUpdate,cb)
  • beforeUpdate / fn(valuesToUpdate,cb)
  • afterUpdate / fn(updatedRecord,cb)
  • beforeDestroy / fn(criteria,cb)
  • afterDestroy / fn(cb)

但是,如果我想在创建和更新之前采取行动怎么办?

Rails有beforeSave这对此非常有用。在sails.js中有类似的东西吗?

我可以让两个回调都调用一个函数,但我想确定没有更好的方法。

1 个答案:

答案 0 :(得分:2)

您可以从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值!