onDelete
Source Code | Documentationts
import { onDelete } from 'feathers-utils/hooks';Type declaration
Show Type Declarations
ts
export type OnDeleteAction = "cascade" | "set null"
export interface OnDeleteOptions<
H extends HookContext = HookContext,
S extends keyof H["app"]["services"] = keyof H["app"]["services"],
> {
/**
* The related service where related items should be manipulated
*/
service: S
/**
* The propertyKey in the related service
*/
keyThere: NeverFallback<keyof InferGetResult<H["app"]["services"][S]>, string>
/**
* The propertyKey in the current service.
*/
keyHere: keyof ResultSingleHookContext<H>
/**
* The action to perform on the related items.
*
* - `cascade`: remove related items
* - `set null`: set the related property to null
*/
onDelete: OnDeleteAction
/**
* Additional query to merge into the service call.
* Typed based on the related service's query type.
*/
query?: InferFindParams<H["app"]["services"][S]>["query"]
/**
* If true, the hook will wait for the service to finish before continuing
*
* @default false
*/
blocking?: boolean
}
/**
* Manipulates related items when a record is deleted, similar to SQL foreign key actions.
* Supports `'cascade'` (remove related records) and `'set null'` (nullify the foreign key).
* Unlike database-level cascades, this hook triggers service events and hooks for related items.
*
* @example
* ```ts
*
*
* app.service('users').hooks({
* after: {
* remove: [onDelete({ service: 'posts', keyHere: 'id', keyThere: 'userId', onDelete: 'cascade' })]
* }
* })
* ```
*
* @see https://utils.feathersjs.com/hooks/on-delete.html
*/
type OnDeleteOptionsDistributed<H extends HookContext> = {
[S in keyof H["app"]["services"] & string]: OnDeleteOptions<H, S>
}[keyof H["app"]["services"] & string]
export declare const onDelete: <H extends HookContext = HookContext>(
options: MaybeArray<OnDeleteOptionsDistributed<H>>,
) => (context: H, next?: NextFunction) => Promise<void>| Argument | Type | Description |
|---|---|---|
| options | MaybeArray<OnDeleteOptionsDistributed<H>> |
| type | methods | multi |
|---|---|---|
| after, around | remove | yes |
The onDelete hook is used to manipulate related data when a record is deleted. This can include setting a foreign key to null or deleting related records.
Example
ts
// users.hooks.ts
import { onDelete } from "feathers-utils/hooks";
export default {
// ...
after: {
// ...
remove: [
onDelete({
service: "posts",
keyThere: "userId",
keyHere: "id",
onDelete: "setNull",
}),
],
},
};