inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

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

495

김경근

작성한 질문수 5

0

제가 리뉴얼버전으로 코드를 작성해서 main.html이 nunjucks로 되어있습니다

제가 어려움을 겪고 있는 부분이 좋아요와 좋아요취소 부분인데

특정 post의 좋아요를 누르면 좋아요가 좋아요 취소로 보이게 하고 싶습니다

강의에서는 map을 이용해서 post모델의 Liker에 있는 User모델들의 id값을 배열로 추출해서

user.id가 존재하는지 여부로 좋아요를 좋아요취소로 바뀌도록 구현하셨는데

nunjucks로 구현하려하니 map도 쓸수 없고 {% %}안에 자바스크립트 코드를 사용하는데 한계가 있는것 같더라구요

이 부분을 nunjucks로 어떻게 구현해야 할지 몰라서 질문올립니다

nodejs mysql mongodb javascript

답변 5

1

제로초(조현영)

1. 저도 해보니 안 되는 것 같네요.

2. 서버쪽에서 데이터가 [{ content: '123', Likers: [{ id: 1 }, { id: 2 }] }, {...}]

이런 배열로 나오게 되는데요. 이걸 반복문을 돌며 { content: '123', likerCounts: twit.Likers.length, liked: twit.Likers.find(v => v.id === req.user.id)} 이런 식으로 변경해서 내려주면 됩니다.

0

김경근

답변 감사합니다

제로초님 답변을 토대로 계속 고민해보고 코드를 작성했는데

아직 해결이 안되서 다시 질문드립니다

1.

main.html에 {% set like = twit.Liker.map((l) => l.id).includes(user.id) %}을 작성해서

if문에 넣어서 구현해봐도 "unexpected token: >" 이라는 에러가 뜨네요 (화살표함수 기호때문인데 화살표 함수를 못쓰는게 확실한지 공식문서를 찾아보고 구글링도 해봤는데 명확한 답을 못찾았습니다)

page.js에서 함수를 만들고 main.html에 넘겨주는 방식으로도 구현해봤는데 작동을 안하네요 (공식문서에 이 부분이 잘 안나와 있어서 구글링을 참고해서 코드를 작성했는데 제가 잘 작성했는데 모르겠습니다)

제가 실수해서 에러가 나는것 같기도 한데 혹시 제로초님 환경에서는 제대로 구현되는지 확인해주실수 있나요

혹시 제대로 작동된다면 좋아요 부분 nunjucks 코드만이라도 참고하고 싶습니다

2.

서버쪽에서 아이디 리스트만 돌려주는 부분을 계속 고민해봤는데 어떻게 구현해야 할지 아이디어가 잘 떠오르질 않아요

제가 생각한건 'post/:id/like' router에서 req.params.id로 post.id값을 받아서 Post.findOne({where: {req.params.id})으로

제가 좋아요한 post를 받아오고나서 getLiker(attributes:['id', 'nick'])로 좋아요한 아이디 리스트를 추출하고 main.html에

넘겨주어서 렌더링하는 거였는데 막상 리스트를 넘겨주고 나니까

main.html에서는 twit을 반복문을 돌면서 렌더링 하고 있어서 제가 좋아요한 post의 좋아요 버튼을

바꾸는 동작을 어떻게 구현할지 막막하더라구요

일단 제 능력부족이라 제가 제대로 구현한게 맞는건지 제로초님이 의도하신 구현은 어떤건지 힌트를 좀 얻고 싶습니다

0

제로초(조현영)

아니면 애초에 서버쪽에서부터 아이디 리스트만 돌려주는 것도 괜찮아보입니다. (근데 보통 실무에서는 좋아요 개수랑, 자기가 좋아요눌렀는지 여부만 돌려보내줍니다. 다른 아이디들이 프론트로 전달되면 사생활침해처럼 될 수 있으니까요)

0

제로초(조현영)

map도 쓸 수 있습니다. twit.Likers.map((v) => v.id).includes(user.id) 하면 되지 않나요?

화살표 함수를 쓸 수 없다고 나온다면 변수를 선언하는 {%set에서 변수로 먼저 만들고 }

if문에서 그 변수를 사용하세요.

0

김경근

{% %}안에 화살표함수기호나 다른{}기호를 쓸수 없다고 에러가 나는데

nunjucks로 어떻게 구현해야 할지 감이 안잡히네요

pug로 바꿔서 해볼까 고민중입니다

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

1

313

2

캐싱에 관하여

0

278

3

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

0

345

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

872

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

605

4

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

0

312

2

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

0

332

3

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

0

229

3

github 코드 질문있습니다

0

152

1