From e4719b907eef92dc71525ce4dffefc1b20b92185 Mon Sep 17 00:00:00 2001 From: Ritchie Date: Thu, 25 Jul 2013 11:03:20 -0700 Subject: [PATCH] Removed hooks documentation --- docs/hooks.md | 135 -------------------------------------------------- 1 file changed, 135 deletions(-) delete mode 100644 docs/hooks.md diff --git a/docs/hooks.md b/docs/hooks.md deleted file mode 100644 index f072329a..00000000 --- a/docs/hooks.md +++ /dev/null @@ -1,135 +0,0 @@ -# loopback-data-hooks - -Hooks and object lifecycle. - -## DESCRIPTION - -Hook is a class method called on object when some event happens. List of events: - -* `initialize`: -Called after `new Model` called. - -* `create`: -Called before and after create. - -* `update`: -Called before and after save (except create). - -* `save`: -Called before and after save (including both create and update). - -* `validate`: -Called before and after validations. - -* `destroy`: -Called before and after destroy on instance. - - -Each hook except `initialize` accepts callback as the first argument. This callback -should be called when hook is done. All hooks are called on object instance, but it's -not recommended to use `this` for updating all hooks where data argument is -available (second argument for all data-related before-hooks: save, update, -create). - -## INITIALIZE - -Initialize hook called when new object created after all setters and defaults -being applied. - - Model.afterInitialize = function() { - this.property = 'some value; - console.log('afterInitialize called'); - }; - new Model; // afterInitialize called - -## CREATE - -Create hooks is being called when object is created. -The `beforeCreate` hook accepts `data` as a second argument. - - Model.beforeCreate = function(next, data) { - // use data argument to update object - data.createdAt = new Date(); - console.log('before'); - next(); - }; - - Model.afterCreate = function(next) { - this.notifySocialNetworks(); - this.sendEmailNotifications(); - console.log('after'); - next(); - }; - - Model.create({foo: 'bar'}, function(err, model) { - console.log('callback'); - }); - -Example output will be: - - before - after - callback - -## UPDATE - -Update hooks called on each save except create. -The `beforeUpdate` hook accepts data as second argument. -The data argument contains only actual data for update, not full object data. - - Model.beforeUpdate = function(next, data) { - // use data argument to update object - // in update hook data argumen only contains data for update (not - // full object) - data.updatedAt = new Date(); - console.log('before'); - next(); - }; - - Model.afterUpdate = function(next) { - this.scheduleFulltextIndexUpdate(); - console.log('after'); - next(); - }; - - model.updateAttributes({foo: 'bar'}, function(err, model) { - console.log('callback'); - }); - -Example output will be: - - before - after - callback - -## SAVE - -Save hooks called on each save, both during update and create. -The `beforeSave` hook accepts `data` as a second argument. For this cook hook `data` argument is the same as `this` when model.save() is called. When model.updateAttributes() called data argument contains only actual changes. - - Model.beforeSave = function(next, data) { - if ('string' !== typeof data.tags) { - data.tags = JSON.stringify(data.tags); - } - next(); - }; - - Model.afterSave = function(next) { - next(); - }; - -## DESTROY - -Hook is destroyed once `model.destroy()` is called. Please note that -`destroyAll` method doesn't call destroy hooks. - -## VALIDATE - -Validate hooks called before and after validation and should be used for data -modification and not for validation. Use custom validation described in -loopback-connector-validations(3) man section. - -## SEE ALSO - -loopback-data-model -loopback-data-validations