Hooks
trigger
type | methods | multi | details |
---|---|---|---|
before , after , around | create , patch , update , remove | yes | source |
Options
The options of the trigger
hook are of type: Subcription
or Subcription[]
or (context: HookContext) => Promisable<Subscription | Subscription[]>
. But what is a Subcription
?
A subscription is an object with the following properties:
Property | Description |
---|---|
service | The service to subscribe to. To be used if you share trigger options between several services/methods. Type: string | string[] optional - Default: undefined |
method | The method to subscribe to. To be used if you share trigger options between several services/methods. Type: string | string[] optional - Default: undefined |
data | Check the context.data for something. Uses sift.js under the hood.Type: Record<string, any> | boolean | (item: T, context: HookContext) => Promisable<boolean | Record<string, any>> optional - Default: true |
result | Check the context.result for something. Uses sift.js under the hood.Type: Record<string, any> | boolean | (change: { item: T; before: T | undefined }, context: HookContext) => Promisable<boolean | Record<string, any>> optional - Default: true |
params | Check the context.params for something. Uses sift.js under the hood.Type: Record<string, any> | boolean | (item: T, context: HookContext) => Promisable<boolean | Record<string, any>> optional - Default: true |
fetchBefore | The trigger hook lets you compare the result against the item before. This is disabled by default for performance reasons. If you use conditionsBefore , it will fetch the items in the before hook automatically. If you don't need conditionsBefore but your conditionsResult looks something like: ({ before }) => ({ publishedAt: { $gt: before.publishedAt } }) you need to set fetchBefore:true explicitelyType: boolean optional - Default: false |
before | Check the before object from trigger before hook, if available. Uses sift.js under the hood.Type: Record<string, any> | boolean | (item: T, context: HookContext) => Promisable<boolean | Record<string, any>> optional - Default: true |
manipulateParams | You can extend the params for the subscription, e.g. for population.Type: (params: Params, context: HookContext) => (Promisable<Params>) optional - Default: undefined |
action | The action, that will be run, if all checks pass for the subscription. Type: ({ before, item }, { context, items, subscription }) => Promisable<any> Type (batchMode=true): (changes: [change: { before, item }, options: { context, items, subscription }][], context) => Promisable<any> optional - Default: undefined |
batchMode | Enables batch mode. In batch mode: If multiple items are passed to create, it will only run action once with all items matching the conditions. Type: boolean optional - Default: false |
isBlocking | Wether the trigger hook should wait for the async action before continuing.Type: boolean optional - Default: true |
Action
The action
from subscription
is the function that runs, after all conditions
are fulfilled. The function looks like the following:
js
const action = async ({ before, item }, { context, items, subscription }) => {
// do your own implementation
};
// In batch mode
const action = async (changes) => {
for (const [{ before, item }, { context, items, subscription }] of changes) {
// do your own implementation
}
};
changesById
type | methods | multi | details |
---|---|---|---|
before , after , around | create , patch , update , remove | yes | source |
Options
Property | Description |
---|---|
params | With the params options, you can manipulate params for changesById if you need to.Type: (params: Params, context: HookContext) => (Params | Promise<Params>) optional - Default: undefined |
skipHooks | Use find or _find for refetchingType: boolean optional - Default: false |