카테고리 없음

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

Laftel 2025. 3. 15. 16:42
반응형

***본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다.
이제 Delete를 다시 작성해보자.
코딩을 잘 하는 사람은, 코드 작성을 전부 다 기억할려고 한다기 보다는
내가 할려는 게 이런 기능인데, 이걸 어떻게 썼지? 어떤 표현을 썼지? 라고 1번에 검색해서 찾을 수 있으면 
충분히 숙지한거다. 그러니 개념을 이해하는 게 중요하다

@Delete(':id')
deleteMovie(){
	return 3;
}

현재 코드의 문제점
 

  • 영화 데이터가 실제로 삭제되지 않음
    • 요청을 받아도 this.movies 배열에서 해당 id의 영화를 삭제하지 않음.
    • 단순히 3이라는 숫자를 반환할 뿐, 실제로 데이터에는 아무런 변화가 없음.
  • 삭제할 영화의 id를 받아오지 않음
    • @Param('id') id: string이 없기 때문에, 클라이언트가 삭제하려는 영화의 id를 보낼 방법이 없음.

 

@Delete(':id')
deleteMovie(
	@Param('id') id:string,
    ){
    
   const movie=this.movies.findIndex(m=>m.id===+id);
   if(movieIndex === -1){
    throw new NotFoundException('존재하지 않는 ID의 영화입니다');
    }
    this.movies.splice(movieindex,1)
    return id;
   
}

개선된 점
삭제할 id를 받아오기 위해 @Param('id') id: string 추가
 

  • 클라이언트가 요청한 id 값을 받아야 해당 id를 가진 영화를 삭제할 수 있음.
  • URL에서 id 값을 받아오도록 @Param을 추가.

삭제할 영화가 존재하는지 확인

  • findIndex()를 사용하여 해당 id를 가진 영화가 존재하는지 확인.
  • -1이면 해당 영화가 존재하지 않는 것이므로 NotFoundException을 발생시켜 예외 처리.

실제로 배열에서 해당 영화 삭제

 

  • splice()를 사용하여 movieIndex 위치의 요소를 제거.
  • this.movies 배열에서 해당 영화가 삭제되므로, 이후 GET /movie 요청을 하면 삭제된 영화가 보이지 않음.

 

 


#패스트캠퍼스 #직장인자기계발 #직장인공부 #환급챌린지 #패스트캠퍼스후기 #오공완
https://bit.ly/4hTSJNB
 

반응형