inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

스스로해보기 좋아요, 좋아요 취소 부분 구현

1980

박정인

작성한 질문수 1

0

안녕하세요~ 

강의를 듣다보니 시간의 흐름에 따라 바뀐 부분들이 많아서

이번에 나온 개정판 책을 사서 강의와 함께 보면서 개정판 책에 나오는 코드를 기준으로 실습을 하고 있는데

스스로해보기 부분의 좋아요, 좋아요 취소 부분에서 막혔습니다.

main.html에서 좋아요, 좋아요 취소 if 조건 값 설정을 어떻게 해야하는지 궁금합니다.

좋아요 버튼클릭하면 db에 저장까지는 되는데 좋아요 취소로 버튼이 바뀌지 않고 삭제도 되지 않습니다.

{% for twit in twits %}
<div class="twit">
<input type="hidden" value="{{twit.User.id}}" class="twit-user-id">
<input type="hidden" value="{{twit.id}}" class="twit-id">
<div class="twit-author">{{twit.User.nick}}</div>
{% if not followerIdList.includes(twit.User.id) and twit.User.id !== user.id %}
<button class="twit-follow">팔로우하기</button>
{% endif %}
{% if followerIdList.includes(twit.User.id) and twit.User.id !== user.id %}
<button class="twit-unfollow">팔로우끊기</button>
{% endif %}
<div class="twit-content">{{twit.content}}</div>
{% if twit.img %}
<div class="twit-img"><img src="{{twit.img}}" alt="섬네일"></div>
{% endif %}
{% if user and not liker %}
<button class="like">좋아요</button>
{% endif %}
{% if user and liker %}
<button class="unlike">좋아요 취소</button>
{% endif %}
</div>
{% endfor %}
document.querySelectorAll('.like').forEach(function(tag) {
tag.addEventListener('click', function() {
const twitId = tag.parentNode.querySelector('.twit-id').value;
axios.post(`/post/${twitId}/like`)
.then(() => {
location.reload();
})
.catch((err) => {
console.error(err);
});
});
});
document.querySelectorAll('.unlike').forEach(function(tag) {
tag.addEventListener('click', function() {
const twitId = tag.parentNode.querySelector('.twit-id').value;
axios.post(`/post/${twitId}/unlike`)
.then(() => {
location.reload();
})
.catch((err) => {
console.error(err);
});
});
});
router.post('/:id/like', async (req, res, next) => {
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/unlike', async (req, res, next) => {
try {
const post = await Post.findOne({ where: { id: req.params.id } });
await post.removeLiker(req.user.id);
res.send('OK');
} catch (error) {
console.error(error);
next(error);
}
});

nodejs mongodb javascript mysql

답변 8

0

윤다빈

{% if twit.Likers.includes(user.id) %} 이런형태로 하면 좋아요 버튼이 안나오게 되는데 혹시

twit.Liker을 확인해보면 object SequelizeInstance:User 이런 식으로 나오는데

이유를 잘 모르겠습니다.. ㅜ

0

제로초(조현영)

Likers에는 id만 담겨있어야 합니다. find하실 때 옵션을 잘못주셨을 수 있습니다.

0

제로초(조현영)

네네 아무리해도 안 되시면 다시 질문남겨주세요~

0

박정인

추가적으로 말씀해주신 부분은  되어 있었습니다. 좋아요는 되는데 취소가 안되고 있어서요 스스로 해보기이니 좀 더 찾아보고 고민해보도록 하겠습니다~ 말씀해주셔서 감사합니다~

0

제로초(조현영)

twit.Likers 안에 값이 들어있는지부터 확인하셔야 합니다. twit.Likers도 그냥 생기는 게 아니라 서버쪽에서 post.findAll할 때 include User as Likers 넣어주셔야 Likers가 생깁니다.

0

박정인

그렇게도 해봤었는데 안되서요.... 좋아요 클릭하면 디비에 저장도 잘 되는데 좋아요 취소로 버튼도 안바뀌고 삭제도 안되서 문의드렸어요 다시 한 번 더 코드를 살펴보도록 하겠습니다 ㅠㅠ 

0

제로초(조현영)

{% if twit.Likers.includes(user.id) %}

이렇게 판단해도 될 것 같은데요.

user이나 twits followerIdList는 모두 서버쪽에서 res.render에서 넣어줍니다.

0

박정인

프론트 부분 코드라서 잘 모르겠습니다;;; 조건을 줘야 할 것 같아서 이 것 저것 해보다가 안되서 저렇게 쳐놓기만 한 것이고요.

제로초님이 팔로우 부분 조건 설정하신 것 처럼 하면 되지 않을까 하고 보는데

{% if followerIdList.includes(twit.User.id) and twit.User.id !== user.id %}

위의 코드에서 followerIdList 이 부분이 어디에서 오는지 잘 모르겠습니다.;

0

제로초(조현영)

{% if user and not liker %}

하셨는데 liker가 어디서 온 것인가요? liker에 자신이 이 게시글에 좋아요를 눌렀는지에 대한 정보가 안 담겨있는 것 같습니다.

실제 서비스에서도 cluster를 사용하나요?

1

313

2

캐싱에 관하여

0

278

3

salt를 실무에서 사용할때 항상 randomBytes로 만들어줘야 하나요?

0

347

1

게시물 올리기 오류

0

407

1

캐슁 이후 로그인창

0

266

1

kakao passport 질문있습니다.

0

493

3

global객체 공유 질문드립니다.

1

417

1

서버가 죽어버리네요

0

1047

8

포링키 문제..

0

234

2

커넥션 플래시 설치문제

0

216

2

익스프레스 제너레이터? 설치문제

0

2585

6

redis 질문입니다.

0

305

1

9장 세션을 DB에 저장시 리다이렉션 오류 발생

0

874

8

프레임워크 선택에 관하여 질문이 있습니다.

0

300

3

시퀄라이즈 질문입니다 ! !

0

588

1

리뉴얼 강의 12강 socket.io에서 req.session접근 관련 질문

0

922

6

oAuth 질문입니다.

0

356

3

GCP 질문입니다.

0

366

1

Passport 모듈 로그인 구현관련

0

720

6

카카오 로그인 관련 질문입니다!!

0

606

4

스스로 해보기 10-16 nunjuncks 질문있습니다

0

499

5

제로초님 HTTP 완벽가이드 추천해주신거 너무 잘 읽었습니다.

0

317

2

gif채팅방 nunjucks관련 질문입니다!

0

337

3

현영님 몽고db관련 질문입니다.

0

233

3