728x90
반응형
2.2 / 2.3 Movies Service part
서비스를 만든다? → nest g s 하면 되겠네
먼저 movie에서 사용되어질 entity 들을 넣어주기 위한 파일을 생성해서
movie.entity.ts 라는 파일을 만들어주고
export class Movie {
id: number;
title: string;
year: number;
genres: string[];
}
속성값들을 기입해주자
자세히 살펴보니 express에서 쓰던 Schemas 와 비슷한 느낌을 받았다.
작성이 완료되었다면
service를 하나하나 만들어 나가보자.
import { Injectable } from '@nestjs/common';
import { NotFoundException } from '@nestjs/common/exceptions';
import { Movie } from './entities/movie.entity';
@Injectable()
export class MoviesService {
private movies: Movie[] = [];
getAll(): Movie[] {
return this.movies;
}
getOne(id: string): Movie {
const movie = this.movies.find((movie) => movie.id === +id);
if (!movie) {
throw new NotFoundException(`Movie with ID: ${id} not found.`);
}
return movie;
}
deleteOne(id: string) {
this.getOne(id);
this.movies = this.movies.filter((movie) => movie.id !== +id);
}
create(movieData) {
this.movies.push({
id: this.movies.length + 1,
...movieData,
});
}
update(id: string, updateData) {
const movie = this.getOne(id);
this.deleteOne(id);
this.movies.push({ ...movie, ...updateData });
}
}
import {
Controller,
Delete,
Get,
Param,
Body,
Patch,
Post,
} from '@nestjs/common';
import { MoviesService } from './movies.service';
import { Movie } from './entities/movie.entity';
@Controller('movies')
export class MoviesController {
constructor(readonly moviesService: MoviesService) {}
@Get()
getAll(): Movie[] {
return this.moviesService.getAll();
}
@Get('/:id')
getOne(@Param('id') movieId: string): Movie {
return this.moviesService.getOne(movieId);
}
@Post()
create(@Body() movieData) {
return this.moviesService.create(movieData);
}
@Delete('/:id')
remove(@Param('id') movieId: string) {
return this.moviesService.deleteOne(movieId);
}
@Patch('/:id')
patch(@Param('id') movieId: string, @Body() updateData) {
return this.moviesService.update(movieId, updateData);
}
}
updateData의 유효성 검사를 하지 않아서 생기는 문제다.
다행히도 NestJS 에서는 편리하게 검사를 할 수 있다.
—> DTSs and Validation 에서 확인해보자
728x90
반응형
'📁 𝐟𝐫𝐚𝐦𝐞𝐖𝐨𝐫𝐤 > Nest.js' 카테고리의 다른 글
[Nest.js] Nest.js를 사용할 때 알아야 할 기본적인 몇 가지 (0) | 2023.03.30 |
---|---|
[Nest.js] Nest.js 에서 Rest한 API create 하는 방법 (1) (0) | 2023.03.30 |
[Nest.js] Nest.js의 아키텍쳐 (0) | 2023.03.30 |
[Nest.js] Nest.js 기본 세팅 (0) | 2023.03.30 |