본문 바로가기
패스트캠퍼스 환급챌린지

패스트캠퍼스 환급챌린지 13일차 : 코드팩토리의 백엔드 아카데미 : 한 번에 끝내는 NestJS 패키지 - 기초부터 MSA까지 강의 후기

by 논문보관함 2025. 3. 17.

본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다.

https://bit.ly/4hTSJNB

 

커리어 성장을 위한 최고의 실무교육 아카데미 | 패스트캠퍼스

성인 교육 서비스 기업, 패스트캠퍼스는 개인과 조직의 실질적인 '업(業)'의 성장을 돕고자 모든 종류의 교육 콘텐츠 서비스를 제공하는 대한민국 No. 1 교육 서비스 회사입니다.

fastcampus.co.kr

0317 월요일

 

학습 내용 정리

Genre Many to Many Relationship 생성하고 엔드포인트 작업하기

POST movie 엔드포인트 업데이트하기

 PATCH GET movie 엔드포인트 업데이트하기

학습후기

이번 학습에서는 POST /movie 엔드포인트를 직접 구현하고, PATCH와 GET 엔드포인트를 개선하는 작업을 수행했다. 단순한 CRUD 작업이 아니라 Many-to-Many 관계를 설정하고, 관계된 데이터를 올바르게 처리하는 과정에서 많은 시행착오를 겪었다. 특히 Movie 엔터티와 Genre 엔터티 간의 관계를 설정하는 부분에서 어려움을 느꼈다. 기존에는 단일 Genre만을 처리하려고 했으나, 실제로는 Movie가 여러 Genre를 가질 수 있어 이를 배열로 받아 처리해야 했다. 처음에는 이를 고려하지 못해 오류가 발생했고, 이를 해결하기 위해 TypeORM의 In 조건을 활용하여 여러 개의 Genre를 한 번에 조회하는 방식으로 변경했다.

또한, Director와 Genre 데이터를 조회할 때 존재하지 않는 경우를 처리하는 로직이 부족했다. 데이터베이스에서 감독(Director)이나 장르(Genre)를 찾을 수 없는 경우에도 별도의 예외 처리를 하지 않아 오류가 발생하는 문제가 있었다. 이를 해결하기 위해 NotFoundException을 추가하여, 존재하지 않는 Director 또는 Genre ID가 포함된 요청이 들어올 경우 사용자에게 명확한 에러 메시지를 제공하도록 개선했다. 이런 예외 처리가 중요하다는 것을 다시 한 번 깨달았고, 앞으로는 요청 데이터 검증을 더욱 신경 써야겠다고 생각했다.

PATCH /movie/:id 엔드포인트를 개선하는 과정에서도 어려움을 겪었다. 기존에는 영화의 기본 정보만 업데이트하는 방식이었지만, Director와 Genre 정보를 수정하는 기능도 필요했다. 특히, Director가 변경될 경우 새로운 Director를 찾아 업데이트해야 했고, Genre도 마찬가지로 새로운 genreIds가 주어졌을 경우 해당하는 Genre들을 다시 조회하여 저장하는 방식으로 수정했다. 하지만 update 메서드는 변경된 데이터를 반환하지 않기 때문에, 데이터를 저장한 후 findOne을 다시 호출하여 최종 결과를 가져오는 방식으로 구현했다. 이렇게 하지 않으면 클라이언트가 변경된 데이터를 확인할 수 없기 때문이다.

이 과정에서 TypeORM의 다양한 메서드와 옵션들을 활용하는 방법을 배웠다. 특히 relations를 설정하여 findOne을 실행하면 연관된 데이터까지 한 번에 조회할 수 있다는 점이 유용했다. 처음에는 단순히 findOne(id)만 호출했는데, 이 경우 Director나 Genre 정보가 포함되지 않아 추가적인 find 요청을 해야 했다. 하지만 relations: ['director', 'genres']를 설정하면 필요한 데이터를 한 번의 쿼리로 가져올 수 있어 코드가 훨씬 효율적으로 개선되었다.

이번 학습을 통해 Many-to-Many 관계를 다루는 방법, 예외 처리의 중요성, TypeORM의 효율적인 활용법 등을 깊이 있게 배울 수 있었다. 처음에는 오류가 많아서 멘탈이 바삭바삭해지는 느낌이었지만, 강의를 들으며 부족한 부분을 채워나가면서 점점 이해가 되는 경험을 했다.

 

사진

시작
종료

 

수강클립

결과물