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
Configuration object for CRUD operations
Model configuration
The entity class/type to use for CRUD operations
Data Transfer Object configuration for create and update operations
Serialization options for responses
Query configuration options
Fields allowed in queries
Fields excluded from queries
Fields to persist in all queries
Default filter conditions
Relation join options
Default sort configuration
Default limit for pagination
Maximum allowed limit
Cache duration in milliseconds, or false to disable
Always return paginated responses
Enable soft delete functionality
Route-specific configuration
Routes to exclude from generation. Available routes:
getManyBase, getOneBase, createOneBase, createManyBase, updateOneBase, replaceOneBase, deleteOneBase, recoverOneBaseOnly generate these routes
Options for the get many route
Options for the get one route
Options for the create one route
Options for the create many route
Options for the update one route
Options for the replace one route
Options for the delete one route
Options for the recover one route (soft delete)
URL parameter configurationEach key is the parameter name, and the value is a ParamOption object with:
Entity field name to map to
Parameter type (e.g., ‘number’, ‘string’, ‘uuid’)
Enum type for parameter validation
Whether this is a primary key parameter
Disable this parameter
Custom routes factory class for advanced customization
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:| Route Name | HTTP Method | Path | Description |
|---|---|---|---|
getManyBase | GET | / | Retrieve multiple entities |
getOneBase | GET | /:id | Retrieve single entity |
createOneBase | POST | / | Create single entity |
createManyBase | POST | /bulk | Create multiple entities |
updateOneBase | PATCH | /:id | Update single entity |
replaceOneBase | PUT | /:id | Replace single entity |
deleteOneBase | DELETE | /:id | Delete single entity |
recoverOneBase | PATCH | /:id/recover | Recover soft-deleted entity |
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