Skip to main content
The CrudOptions interface is the primary configuration object used when setting up a CRUD controller with the @Crud() decorator.

Interface Definition

export interface CrudOptions {
  model: ModelOptions;
  dto?: DtoOptions;
  serialize?: SerializeOptions;
  query?: QueryOptions;
  routes?: RoutesOptions;
  routesFactory?: typeof CrudRoutesFactory;
  params?: ParamsOptions;
  validation?: ValidationPipeOptions | false;
}

Properties

model
ModelOptions
required
The entity/model class that the CRUD controller will operate on. This is the only required property.See ModelOptions for details.
dto
DtoOptions
Data Transfer Object configurations for create, update, and replace operations.Allows you to specify different DTOs for different operations:
  • create: DTO class for create operations
  • update: DTO class for update operations
  • replace: DTO class for replace operations
serialize
SerializeOptions
Serialization options for transforming entities before returning them in responses.Allows you to specify different serialization classes for each CRUD operation to control which fields are exposed in the API response.
query
QueryOptions
Global query configuration options that apply to all query operations.See QueryOptions for details.
routes
RoutesOptions
Configuration for individual CRUD routes, allowing you to customize or exclude specific endpoints.See RouteOptions for details.
routesFactory
typeof CrudRoutesFactory
Custom factory for generating CRUD routes. Advanced use only.This allows you to completely override how routes are generated and registered.
params
ParamsOptions
Configuration for URL parameters used in CRUD operations.See ParamsOptions for details.
validation
ValidationPipeOptions | false
Validation pipe options from NestJS, or false to disable validation.When set to false, automatic validation of request bodies and query parameters is disabled. Otherwise, you can pass NestJS ValidationPipeOptions to customize validation behavior.

Usage Example

import { Controller } from '@nestjs/common';
import { Crud, CrudOptions } from '@nestjsx/crud';
import { Hero } from './hero.entity';
import { CreateHeroDto } from './dto/create-hero.dto';
import { UpdateHeroDto } from './dto/update-hero.dto';

const crudOptions: CrudOptions = {
  model: {
    type: Hero,
  },
  dto: {
    create: CreateHeroDto,
    update: UpdateHeroDto,
  },
  query: {
    limit: 25,
    maxLimit: 100,
    alwaysPaginate: true,
    join: {
      powers: {
        eager: true,
      },
    },
  },
  routes: {
    exclude: ['createManyBase'],
  },
  params: {
    id: {
      field: 'id',
      type: 'uuid',
      primary: true,
    },
  },
};

@Crud(crudOptions)
@Controller('heroes')
export class HeroesController {
  constructor(public service: HeroesService) {}
}

ModelOptions

Configure the entity model

QueryOptions

Configure query behavior

RouteOptions

Configure individual routes

ParamsOptions

Configure URL parameters

Notes

The CrudOptions interface is typically used with the @Crud() decorator to configure your CRUD controller. All properties except model are optional, providing sensible defaults.

Build docs developers (and LLMs) love