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, recoverOneBaseBaseRouteName[]
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
GET /users- Get many usersGET /users/:id- Get one userPOST /users- Create one userPOST /users/bulk- Create many usersPATCH /users/:id- Update one userPUT /users/:id- Replace one userDELETE /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
See Also
- @CrudAuth - Add authentication and authorization
- @Override - Override generated routes
- @ParsedRequest - Access parsed request data