Back-End/Nest.js
Nest.js | MongoDB | Model,Schema,Controller
개발자티포
2021. 10. 6. 13:09
728x90
반응형
기본적인 cats 모듈,컨트롤러,서비스를 만들고 schemas 폴더를 다음과 같이 옮긴다.
$ nest g module cats
$ nest g co cats
$ nest g s cats
cats.module.ts 파일을 수정해준다.
cats.module.ts
import { Module } from '@nestjs/common';
import { MongooseModule } from '@nestjs/mongoose';
import { CatsController } from './cats.controller';
import { CatsService } from './cats.service';
import { Cat, CatSchema } from './schemas/cat.schema';
@Module({
imports: [MongooseModule.forFeature([{ name: Cat.name, schema: CatSchema }])],
controllers: [CatsController],
providers: [CatsService],
})
export class CatsModule {}
그 다음 지정된 스키마를 @InjectModel() 데코레이터를 사용하여 CatService에 삽입한다.
cats.service.ts
import { Model } from 'mongoose';
import { Injectable } from '@nestjs/common';
import { InjectModel } from '@nestjs/mongoose';
import { Cat, CatDocument } from './schemas/cat.schema';
import { CreateCatDto } from './dto/create-cat.dto';
@Injectable()
export class CatsService {
constructor(@InjectModel(Cat.name) private catModel: Model<CatDocument>) {}
}
아직 DTO파일을 안 만들었기 때문에 에러가 뜬다. DTO파일을 작성해보자.
$ npm i class-validator class-transformer
create-cat.dto.ts
import {IsString, IsNumber} from 'class-validator'
export class CreateCatDto {
@IsString()
readonly name: string;
@IsNumber()
readonly age: number;
@IsString({each:true})
readonly breed: string;
}
이제 Contoller를 작성해보자.
cat.controller.ts
import { Controller, Get } from '@nestjs/common';
import { CatsService } from './cats.service';
import { Cat } from './schemas/cat.schema';
@Controller('cats')
export class CatsController {
constructor(private readonly catsService: CatsService) {}
}
여기까지 cats모듈과 dto를 만들어보았다.
728x90
반응형