- service 모듈 만들기
import { Injectable } from '@nestjs/common';
import { Movie } from './entities/movie.entity';
@Injectable()
export class MoviesService {
private movies: Movie[] = []
getAll(): Movie[] {
return this.movies
}
getOne(id:string):Movie{
return this.movies.find(movie => movie.id === parseInt(id))
}
remove(id:string):boolean {
this.movies.filter(movie => movie.id !== +id)
return true
}
create(movieData){
this.movies.push({
id: this.movies.length + 1,
...movieData,
})
}
}
- fake database를 이용
- 인터페이스 설정
export class Movie {
id: number
title: string
year: number
genres: string[]
}
- controller에 적용
import { Controller,Delete,Get, Param, Post, Patch, Body, Query } from '@nestjs/common';
import { Movie } from './entities/movie.entity';
import { MoviesService } from './movies.service';
@Controller('movies')
export class MoviesController {
constructor(private 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.remove(movieId)
}
@Patch('/:id')
patch(@Param('id') movieId: string, @Body() updateData){
return {
updateMovie: movieId,
...updateData
}
}
}


- 예외처리
import { Injectable, NotFoundException } from '@nestjs/common';
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 === parseInt(id))
if(!movie) {
throw new NotFoundException(`Movie with ID ${id} not found. `)
}
return movie
}
remove(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.remove(id)
this.movies.push({ ...movie, ...updateData})
}
}
- 유효성 검사