[회고] 신입 iOS 개발자가 되기까지 feat. 카카오 자세히보기

🛠 기타/WEB

Nest.js 기초 - Service 생성

inu 2021. 1. 6. 17:18
반응형

Service

  • nest.js는 controller와 비즈니스 로직을 분리한다.
  • 따라서 실제적인 기능인 비즈니스 로직은 모두 Service에서 정의하게 된다.
  • controller와 마찬가지로 app.service.ts만으로는 모든 기능을 구성하기 어렵다.
  • 따라서 새로운 service를 생성해야 할 경우가 많다.
nest g s
  • 위 명령어로 새로운 service를 만들 수 있다.
@Injectable()
export class MoviesService {
  getAll(): Movie[] {
    return this.movies;
  }

  getOne(id: number): 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: number) {
    this.getOne(id);
    this.movies = this.movies.filter(movie => movie.id !== id);
  }

  create(movieData: CreateMovieDto) {
    this.movies.push({
      id: this.movies.length + 1,
      ...movieData,
    });
  }

  update(id: number, updateData: UpdateMovieDto) {
    const movie = this.getOne(id);
    this.deleteOne(id);
    this.movies.push({ ...movie, ...updateData });
  }
}
  • 이와 같이 실질적으로 돌아가는 비즈니스 로직을 작성하면 된다.

cf1. Entity

  • 데이터베이스 모델을 작성하여 활용한다.
  • 가령 영화에 대한 모델을 작성한다고치면,
export class Movie {
    id: number;
    title: string;
    year: number;
    genres: string[];
}
  • 이와 같이 작성해 사용할 수 있을 것이다.
  • 이를 service에서 import해, 해당 구조를 활용한다.

cf2. NotFoundException

  • nest.js는 자체적으로 오류에 대한 처리도 가능하다.
throw new NotFoundException(`Movie with ID ${id} not found.`);
  • 이는 nest.js에서 자체제공하는 것으로, 이 외에도 여러 오류처리 방법이 존재한다.
반응형