내일배움캠프 TIL

뉴스 피드 프로젝트 진행과정 본캠프 12/24

parkcw0325 2024. 12. 24. 22:02

본격적으로 api만들기에 진입하였다. 

오늘 내가 맡은 부분은 프로필 조회 api와 프로필 수정 api이다.

 

먼저 프로필 조회 api이다 주석으로 상세하게 설명을 해두었다.

 

먼저 인증미들웨어를 거쳐 로그인이 완료된 유저들 만이 본인의 프로필을 확인할 수 있으며, 인증미들웨어에서 설정한 id값을 받아와서 userId 값으로 사용하였다.

 

중간에 고민했던 부분이 있는데 

 

이 부분에서 db에 저장된 password를 bcrypt를 사용하여 자체적으로 ****으로 변환하여 가져오게 할 수 있나? 고민을 했는데 팀원분께서 있긴 할텐데 bcrypt는 불가능하다고 알려주셔서 다음에 찾기로 하고 지금은 시간과의 싸움이기에 

일단 하드코딩으로 넘어갔다.

 

 

다음은 프로필 수정 api이다 프로필 수정은 프로필 조회와 초반은 동일하게 이루어진다. 중간에 중복확인 로직이 들어가있는데 만약 닉네임 값이 입력이 되고, 그 값이 현재 나의 값이랑 같지 않을때!, 라는 조건이다 해당 조건이 충족되면 입력한 닉네임이 테이블안의 다른 닉네임과 중복되는지 확인하고 만약 중복되는 닉네임이 존재한다면 '중복되는 닉네임이 있습니다' 라는 메시지를 출력하게 한다. 여기서 원래 만든 닉네임과 동일하다면, '기존과 동일한 닉네임입니다' 라는 로직도 새롭게 추가해야할 것으로 보인다.

그리고 이 로직은 이번에 공부하면서 알게 되었는데 저렇게 if절이 아닌데 ()를 열고 안에 &&를 사용하면

앞에 있는 부분이 조건이되고, 뒤에있는 부분이 조건이 충족될시  반환되는 값이다.

따라서 만약 입력된 닉네임이 존재한다면 해당 닉네임을 객체로 반환하고 그 객체를 다시 ...으로 분해하는 과정으로 이해하면 된다. 그런데 궁금한점이 그냥 ...을 사용하지 않고 nikename && nickname으로 하면 되지 않나? 라는 생각이 들어서 ai한테 질문을 해보았는데 

 

const nickname = null;

// 방법 1
const updatedData1 = {
  ...(nickname && { nickname })
};
// 결과: {} (nickname 프로퍼티가 아예 생성되지 않음)

// 방법 2
const updatedData2 = {
  nickname: (nickname && nickname)
};
// 결과: { nickname: null } (nickname 프로퍼티가 null로 생성됨)

 

이러한 답변을 주었다. 만약 내 생각으로 작성을 하게 되면 값 자체가 생성안되는 것이 아니라 null값으로 지정되어

들어가기때문이었다 !

 

 

내일은 공휴일이라 쉬고 목요일날에 API작성을 팀원들과 모두 마무리를 하고 프론트쪽도 시도해볼 생각인데 많이 기대된다!