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

강수윤님의 프로필 이미지
강수윤

작성한 질문수

[리뉴얼] Node.js 교과서 - 기본부터 프로젝트 실습까지

9장 nodebird관련질문

작성

·

297

0

안녕하세요 강사님 열심히 수업을 듣고 있는 학생입니다!

다름이 아니라 9장에서 nodebird 프로젝트를 하고 있는데 스스로 해보기 부분에서 막혀서 질문드립니다!

좋아요, 좋아요 취소 부분입니다!

유튜브에는 퍼그로 되있는 부분이 있습니다!

-const like = twit && twit.Liker.map(l => l.id).includes(req.user.id)

if user && !like

   button 좋아요

else if user

   button 좋아요 취소

라고 되어있는 부분인데 이부분을 도저히 어떻게 넌적스로 바꿔야할지 몰라서 질문드렸습니다!

답변 6

0

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

res.render('넌적스명', { twit: twit }) 한 다음에 넌적스에서 twit을 그대로 쓰시면 되는데 너무 어렵게 생각하시는 것 아닌가요?

퍼그로 되어있을 때도 그냥 twit 썼던 것처럼, 서버쪽은 건들 게 없고 넌적스쪽에서만 twit 그대로 써서 하시면 됩니다. 화살표 함수가 안 되면 function으로 바꾸시면 되고요.

0

강수윤님의 프로필 이미지
강수윤
질문자

그럼 어떤식으로 넌적스에 변수를 넘겨 주어야 하나요?

res.locals.likesList = req.user ? Post.Likes.map(l => l.id) : [];

이런식으로 넘겨주려고 해도 map은 없는 메서드라는 에러가 뜹니다.

이런 상황에서 req.user ? Post.Likes.map(l => l.id) : [];

이부분을 도저히 어떻게 짜야할지 모르겠습니다

시퀄라이즈 부분에서 참조로 만든 테이블을 어떻게 가져오나요??

0

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

req.twit이 뭔가요? 넌적스에 넘기는 변수를 의미하시는 거면 req는 빼셔도 됩니다. req.user는 존재하지만 그 외의 다른 것은 존재하지 않습니다.

0

강수윤님의 프로필 이미지
강수윤
질문자

귀찮게 해드려서 죄송합니다! ㅠㅠ

넌적스 코드를 이렇게 바꾸고

{% if user and not (req.twits and likesList.include(req.user.id)) %}
                        <button class="like">좋아요</button>
                    {% elif user and (req.twits and likesList.include(req.user.id)) %}
                        <button class="unlike">좋아요 취소</button>
                   {% endif %}

page.js에

router.use((reqresnext=> {
    // res.locals.like = req.user && req.twit && twit.Liker.map(l => l.id).include(req.user.id);
    res.locals.user = req.user;
    res.locals.followerCount = req.user ? req.user.Followers.length : 0;
    res.locals.followingCount = req.user ? req.user.Followings.length : 0;
    res.locals.followerIdList = req.user ? req.user.Followings.map(f => f.id) : [];
    res.locals.likesList = req.user ? req.twit.Likers.map(l => l.id) : [];
    next();

});

이렇게 코드를 추가했습니다

이때

    res.locals.likesList = req.user ? req.twit.Liker.map(l => l.id) : [];

이 부분에서 Liker나 Likers등 어떤걸 넣어도

Cannot read property 'Liker' of undefined

라는 에러가 뜹니다 ㅠㅠ 이부분을 어떻게 받아와야 할까요??

0

강수윤님의 프로필 이미지
강수윤
질문자

바꾸면

{% if user and not req.user and req.twit and twit.Liker.map(l => l.id).include(req.user.id) %}
                        <button class="like">좋아요</button>
                    {% elif user and req.user and req.twit and twit.Liker.map(l => l.id).include(req.user.id) %}
                        <button class="unlike">좋아요 취소</button>
                   {% endif %}

이런식으로 되는데

넌적스에서는 화살표 함수가 먹지 않아서

어떻게 바꿔야 할지 도저히 모르겠습니다 ㅠㅠ

0

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

https://github.com/ZeroCho/nodejs-book/blob/master/ch9/9.5/nodebird/views/main.html

위 코드에서 if문 부분을 응용해서 하시면 됩니다.

강수윤님의 프로필 이미지
강수윤

작성한 질문수

질문하기