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

둥치탁치님의 프로필 이미지

작성한 질문수

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

스스로 해보기3(좋아요, 좋아요 취소)

좋아요 버튼 클릭시 오류

20.02.04 02:01 작성

·

231

0

좋아요 버튼 클릭시 

TypeError: Cannot read property 'id' of undefined

    at C:\Users\SEJUANY\Desktop\Node.js\nodebird\routes\post.js:82:63

...등

오류메세지가 떠서 트윗아이디가 안들어가나 확인해보니

요청에서 트윗아이디는 잘 들어가는걸 확인하고

post.js에서 오타가 있나 확인해 봤는데 따로 오타는 없어 보입니다

router.post('/:id/like'async (resreqnext=> {
  try {
    const post = await Post.findOne({ where: { id: req.params.id } })
    await post.addLiker(req.user.id);
    res.send('Ok');
  } catch (error) {
    console.error(error);
    next(error);
  }
});

에러 메세지에서 가리키는것을 보아 

const post = await Post.findOne({ where: { id: req.params.id } })
여기에서 id값을 못받아오는것 같은데 어디부분을 확인하면 될까요?

답변 6

0

둥치탁치님의 프로필 이미지
둥치탁치
질문자

2020. 02. 04. 22:39

허허...강의내용에는 isLoggedIn이 없었어요...ㅠㅠ

선생님께서는 없이도 실행됬었는데....

혹시나 해서 isLoggedIn없이 해봤는데 없어도 실행 잘 되요...

0

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

2020. 02. 04. 20:01

코드가 똑같은 게 아닙니다 ㅠㅠ isLoggedIn이 있냐 없냐가 엄청난 차이입니다. 이게 없으면 req.user가 undefined일 때도 실행돼서 에러가 납니다.

0

둥치탁치님의 프로필 이미지
둥치탁치
질문자

2020. 02. 04. 19:01

설정 안되있고 쿠키 삭제 후 다시 실행해봤는데도 안됩니다...

제가 지금 제로초님 깃허브에서 다른강좌 좋아요 기능 복사 후 실행해봤는데 이 코드는 실행 되네요;

제가 쓰던 코드

router.post('/:id/like'async (resreqnext=> {
  try {
    const post = await Post.findOne({ where: { id: req.params.id } })
    await post.addLiker(req.user.id);
    res.send('Ok');
  } catch (error) {
    console.error(error);
    next(error);
  }
});

복사해서 수정한 코드는 

router.post('/:id/like'isLoggedInasync (reqresnext=> {
  try {
    const post = await Post.findOne({ where: { id: req.params.id }});
    await post.addLiker(req.user.id);
    res.send('ok');
  } catch (error) {
    console.error(error);
    next(error);
  }
});
이렇게 수정했더니 실행이 됩니다...
강의 중에 이렇게 코드는 똑같은데 안될때는
어떻게 해야하나요? sns하면서 이런현상이 좀
잦은것 같아서요 ㅜㅜ

0

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

2020. 02. 04. 18:39

req.user.id로 변경하시면  안 되고요. 아래에 있는 게 에러가 나는 겁니다. 그냥 로그인이 문제입니다. 쿠키 문제일 것 같습니다. withCredentials: true같은 설정 하셨나요?

0

둥치탁치님의 프로필 이미지
둥치탁치
질문자

2020. 02. 04. 18:28

req.user.id로 변경해도 똑같습니다...

로그인 유지가 안된다는것은 세션에 저장이 안된다는 건가요??

0

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

2020. 02. 04. 10:38

req.user.id 아닌가요? 에러 뜨는 부분이. 로그인이 되어있지 않거나 로그인 유지가 안 되는 것으로 보입니다.