Skip to main content

Overview

The @Crud decorator is a class decorator that automatically generates RESTful CRUD endpoints for your NestJS controller. It provides a complete set of routes for Create, Read, Update, and Delete operations with extensive customization options.

Signature

Parameters

CrudOptions
required
Configuration object for CRUD operations
ModelOptions
required
Model configuration
any
required
The entity class/type to use for CRUD operations
DtoOptions
Data Transfer Object configuration for create and update operations
SerializeOptions
Serialization options for responses
QueryOptions
Query configuration options
QueryFields
Fields allowed in queries
QueryFields
Fields excluded from queries
QueryFields
Fields to persist in all queries
QueryFilterOption
Default filter conditions
JoinOptions
Relation join options
QuerySort[]
Default sort configuration
number
Default limit for pagination
number
Maximum allowed limit
number | false
Cache duration in milliseconds, or false to disable
boolean
Always return paginated responses
boolean
Enable soft delete functionality
RoutesOptions
Route-specific configuration
BaseRouteName[]
Routes to exclude from generation. Available routes: getManyBase, getOneBase, createOneBase, createManyBase, updateOneBase, replaceOneBase, deleteOneBase, recoverOneBase
BaseRouteName[]
Only generate these routes
GetManyRouteOptions
Options for the get many route
GetOneRouteOptions
Options for the get one route
CreateOneRouteOptions
Options for the create one route
CreateManyRouteOptions
Options for the create many route
UpdateOneRouteOptions
Options for the update one route
ReplaceOneRouteOptions
Options for the replace one route
DeleteOneRouteOptions
Options for the delete one route
RecoverOneRouteOptions
Options for the recover one route (soft delete)
ParamsOptions
URL parameter configurationEach key is the parameter name, and the value is a ParamOption object with:
string
Entity field name to map to
ParamOptionType
Parameter type (e.g., ‘number’, ‘string’, ‘uuid’)
SwaggerEnumType
Enum type for parameter validation
boolean
Whether this is a primary key parameter
boolean
Disable this parameter
typeof CrudRoutesFactory
Custom routes factory class for advanced customization
ValidationPipeOptions | false
Validation pipe options, or false to disable validation

Usage

Basic Example

This generates the following endpoints:
  • GET /users - Get many users
  • GET /users/:id - Get one user
  • POST /users - Create one user
  • POST /users/bulk - Create many users
  • PATCH /users/:id - Update one user
  • PUT /users/:id - Replace one user
  • DELETE /users/:id - Delete one user

Advanced Configuration

With Custom Parameters

Generated Routes

The decorator automatically generates the following base routes:
The recoverOneBase route is only generated when query.softDelete is enabled.

Implementation Details

The decorator uses a routes factory pattern to generate the endpoints. The source code shows:
packages/crud/src/decorators/crud.decorator.ts:4-9
The controller must have a service property that implements the CRUD service interface. This service is used by the generated routes to perform database operations.

See Also