반응형
***본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다.
이제 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
반응형