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

목동 개발자님의 프로필 이미지
목동 개발자

작성한 질문수

Node.js 교과서 - 기본부터 프로젝트 실습까지

clientSecret과 UUID

sequelize where절에 &&는 무슨 의미죠?

작성

·

367

0

  User.findOne({
    where: { id: req.user && req.user.id || null },
    include: { model: Domain },
  })
    .then((user=> {
      res.render('login', {
        user,
        loginError: req.flash('loginError'),
        domains: user && user.domains,
      });
   })
저 밑에 도메인 &&도요...
정확한 id값을 안넘기고 불리언 값을 넘기는건
왜그러는거죠?

답변 2

1

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

불리언 값을 넘기는 게 아닙니다. && 연산자는 불리언을 반환하는 게 아니라 앞의 값이 존재하면 && 다음 값을 반환합니다. 없다면 앞의 값을 반환하고요.

예를 들어 req.user가 존재하면 req.user.id를 넣는 것이고 없으면 req.user를 반환하는데 req.user가 없는 값이므로 || 연산자를 적용해서 undefined를 넣습니다. 삼항연산자와 쓰임새가 같습니다. req.user ? req.user.id : undefined.

|| 연산자는 &&와는 반대로 앞 값이 존재하면 앞의 값을 반환하고, 없다면 다음 값을 반환합니다.

아래 도메인도 마찬가지로 user가 있으면 user.domains를 넣고 없으면 앞의 값인 user를 넣습니다. user가 없는 값(undefined, null, false같은 것)일 때는 없는 값 그대로 나오는 것입니다.

0

감사합니다!

목동 개발자님의 프로필 이미지
목동 개발자

작성한 질문수

질문하기