Service
- 비즈니스 로직
- @Injectable 데코레이터로 감싸져서 모듈에 제공된다.
- 애플리케이션 전체에서 사용될 수 있다.
- 데이터 유효성 처리, 데이터베이스에 아이템 생성 등의 작업하는 부분을 처리하는 곳이다.
- 종속성으로 주입을 해야 Controller에서 Service를 쓸 수 있다.
생성하기
nest g service boards --no-spec
g
: generate
boards
: 이름
--no-spec
: 테스트 코드를 생성하지 않겠다.
Service를 굳이 분리하는 이유?
- 서비스는 요청, 응답에 대해서는 모른다.
- 컨트롤러는 안다.
→ 라우터에서 다 처리해줬던 express와는 다르게 각각 독립적으로 쓸 수 있고, 재사용성이 좋아지며 테스트도 용이해진다.
🤷♀️ express는 독립적으로 쓸 수 없는걸까?
- express는 미들웨어로 빼서 쓸 수는 있지만, 자율적인 구조이다.
→ nest는 구조적 강제성
을 가지며, express는 자율적 구조
를 가진다.