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
반응형

'Back-End > Nest.js' 카테고리의 다른 글

Nest.js | MongoDB | Create  (0) 2021.10.06
Nest.js | MongoDB | Find  (0) 2021.10.06
Nest.js | MongoDB | Schema  (0) 2021.10.06
Nest.js | E2E TESTING | PATCH and DELETE  (0) 2021.09.30
Nest.js | E2E TESTING | Testing GET movies id  (0) 2021.09.30

+ Recent posts