@nestjsx/crud
has been designed for creating CRUD controllers and services in Nest applications. It can be used with TypeORM repositories for now, but Mongoose and additional functionality will be available soon.
Assume you've created some CRUD controller with the route @Controller('cats')
. In that case, Nest will create endpoints as follows:
Res Data: array of entities; an empty array
Res Code: 200
Req Params: :id
- entity id
Res Data: entity object
Res Code: 200; 400; 404
Req Body: entity object
Res Data: entity object
Res Code: 201; 400
Req Params: :id
- entity id
Req Body: entity object
Res Data: entity object
Res Code: 201; 400; 404
Req Params: :id
- entity id
Res Data: empty
Res Code: 200; 400; 404
npm i @nestjsx/crud typeorm @nestjs/typeorm --save
import { Entity, PrimaryGeneratedColumn, Column } from 'typeorm';
@Entity()
export class Cat {
@PrimaryGeneratedColumn() id: number;
@Column() name: string;
}
import { CrudTypeOrmService } from '@nestjsx/crud/typeorm';
import { Injectable } from '@nestjs/common';
import { InjectRepository } from '@nestjs/typeorm';
import { Repository } from 'typeorm';
import { Cat } from './cat.entity';
@Injectable()
export class CatsCrudService extends CrudTypeOrmService<Cat> {
constructor(
@InjectRepository(Cat) private readonly repository: Repository<Cat>,
) {
super(repository);
}
}
import { CrudController } from '@nestjsx/crud';
import { Controller } from '@nestjs/common';
import { Cat } from './cat.entity';
import { CatsCrudService } from './cats-crud.service';
@Controller('cats')
export class CatsCrudController extends CrudController<Cat> {
constructor(private readonly catsCrudService: CatsCrudService) {
super(catsCrudService);
}
}
import { Module } from '@nestjs/common';
import { TypeOrmModule } from '@nestjs/typeorm';
import { Cat } from './cat.entity';
import { CatsCrudService } from './cats-crud.service';
import { CatsCrudController } from './cats-crud.controller';
@Module({
imports: [TypeOrmModule.forFeature([Cat])],
providers: [CatsCrudService],
controllers: [CatsCrudController],
})
export class CatsModule {}
npm run test
npm run test:e2e
- CRUD for TypeORM
- CRUD for Mongoose
- Expose as Dynamic Module
- Swagger integration
- Working with relations (extending CRUD)
This was inspired by nestjs-generic-crud
MIT