인프런 커뮤니티 질문&답변

lolola님의 프로필 이미지
lolola

작성한 질문수

React로 NodeBird SNS 만들기

7-5. 회원가입 리다이렉션과 포스트 제거

me 가없을때 0을 대신넣어주는 로직 질문

작성

·

129

0

const user = await db.User.findOne({
      where: { id: parseInt(req.params.id10) || req.user.id || 0 }
   });
1. 이부분에서요 req.params.id가 0이면 내정보를 요청한걸로쳐서
req.user.id를찾는것은 이해하고있습니다.
근데 로직에서 req.params.id가 0이면 parseInt()가 0을 반환
하잖아요?
그럼이렇게될텐데
where:{id: 0 || req.user&&req.user.id || 0}
or연산자에 의해서 0 이 false로 처리되어서 두번째값인 req.user
가 대입되는건가요?
2. 그렇다면 req.user역시도 undefined라면 마지막값도 0이니
where:{false||false||false}가 되서 sequelize가
에러를일으키지않나요?sequelize가 undefined값을받았을때 오류를
일으킨다고 다른댓글에 답변하신거를 봐서요

답변 1

0

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

1 네 맞습니다.

2. 마지막 0은 false가 되지 않습니다. ||는 실제 값을 false로 바꾸는 게 아니라 falsy한지 여부만 체크하는 것입니다.

lolola님의 프로필 이미지
lolola

작성한 질문수

질문하기