knex-hooks
Allows to easily add before/after insert/update/delete/select hooks to knex.
Install
npm install --save knex-hooks
Usage
const knexHooks = ; const knex = client: 'pg' connection: 'postgres://localhost/db'; // init knex-hooks on knex instance; // add hookknex; ;
Adding hooks
knex;
Adds new hook to knex instance
argument | type | possible values / description / examples |
---|---|---|
when | string/array | "before" , "after" , "*" , ["before", "after"] |
method | string/array | "insert" , "update" , "delete" , "select" , "*" , ["insert", "update", ...] |
table | string/array | "my_table" , "*" , ["my_table1", "my_table2", ...] |
Callback arguments
argument | type | possible values / description / examples |
---|---|---|
when | string | "before" , "after" |
method | string | "insert" , "update" , "delete" , "select" |
table | string | "my_table" |
params | object | |
params.query | knex Builder | knex query builder instance (ie. knex('table').insert('*') ) |
params.result | query result | query result (only for after hooks) - might be modified/replaced by previous hooks |
Modifying query in 'before' hooks
const helpers = helpers; // before insertknex;; // before updateknex;; // before selectknex;;
Modifying query result in 'after' hooks
knex;;
Disabling hooks
You can disable ALL hooks on individual query by calling .hooks(false)
method on knex builder:
; // hooks won't run for this query
Helpers
getInsertData / getUpdateData
These helpers allows to easily get inert/update data from knex builder
const helpers = helpers; helpers; // returns { name: 'john' }helpers; // returns { name: 'john' }
extendKnex
Allows to modify knex instance (even sub-instances created by transations)
const helpers = helpers; helpers;
extendBuilder
Allows to modify knex builder (even sub-instances created by transations)
const helpers = helpers; helpers;