Skip to content

onDelete

hooks
Source Code | Documentation
ts
  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>
ArgumentTypeDescription
optionsMaybeArray<OnDeleteOptionsDistributed<H>>
typemethodsmulti
after, aroundremoveyes

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",
      }),
    ],
  },
};

Released under the MIT License.