• 카테고리

    질문 & 답변
  • 세부 분야

    풀스택

  • 해결 여부

    미해결

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

19.10.19 07:28 작성 조회수 97

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한지 여부만 체크하는 것입니다.