반응형
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에서 자체제공하는 것으로, 이 외에도 여러 오류처리 방법이 존재한다.
반응형
'🛠 기타 > WEB' 카테고리의 다른 글
Nest.js - unit testing, e2e testing (feat. jest) (0) | 2021.01.08 |
---|---|
Nest.js - DTO(Data Transfer Object) (0) | 2021.01.06 |
GraphQL - 서버 시작하기 (by. GraphQL-yoga) (0) | 2021.01.06 |
Nest.js 기초 - 시작하기 (0) | 2021.01.04 |
React 기초 - Hooks API 사용하기 (useState, useEffect) (0) | 2021.01.04 |