Enjoy Programming

좋아요 구현하기 본문

JavaScript/Node.JS

좋아요 구현하기

LEETAEEON 2021. 7. 12. 15:58

사이드 프로젝트로~ 유튭과 인스타를 클론하면서 진행중인데~

좋아요를 구현해보았다.. 생각보다 어렵진 않았는데~

 

1. db model의 스키마 타입 정하기

2. 라우터 url설정하기

3. 컨트롤러 작성하기

4. fetch 를 이용해 라우터에 POST로 해당값을 서버로 보내주고~

5. response로 db에 저장된 값을 가져와서 템플릿에 뿌려준다~

 

일단 완성된 것은/

photo모델의 rating 스키마 타입은 objectId로 하고 User모델을 참조한다.

User 모델 또한 좋아요 한 영상이나 사진을 각각의 프로퍼티에 배열로 담아준다.

apiRouter를 통해 해당 값들을 받아오도록 한다.

 

템플릿에서 rating prop의 값이 배열로 정해져있으므로 length로 해당 좋아요 갯수를 정한다.

프런트의 자바스크립트로 브라우저상의 버튼을 클릭하면~ 해당 photo의 dataset에 저장된 id를 이용해 POST로 해당 라우터로

접근한다. 만약 response의 status가 201이면 ratingCount를 thumbCounting 에 파라미터를 전달해주고

fake로 실시간으로 올라가는 것처럼 보여준다~

 

컨트롤러가 좀 길긴한데~ 요기서 고민한게~ 좋아요를 계속 누를수 있게 만들면 안된다는 것이다.

유저 한명당 하나의 좋아요만 가능해야한다.

처음 시행착오가 카운팅이니까 type을 Number로 주고진행했다는것.  위 로직에서 ratingCount에 +1을 하거나

이미 해당 유저가 해당 사진을 좋아요를 했으면 -1로 처리하는 방식으로 햇는데~

문제점이 1이상일때는 1 , 2 ,1 , 2이렇게 반복이 되지만 0일때 -값이 들어와버리면 -로 무한히 가버린다는 것이다...

 

그래서 방법을 바꾼것이 type을 objectId로 바꾸고 좋아요 한 숫자는 해당 프로퍼티의 length로 결정해버렸다.

한방에 해결이 되었다~ 깔끔하다.

 

음 구독도 마찬가지일듯 싶다.  구독하기를 구현하고서 프로필에 내가 구독한 사람의 목록을 뽑아내도록 해보자~

'JavaScript > Node.JS' 카테고리의 다른 글

socket.io 간단한 채팅 테스트  (0) 2021.08.09
Socket IO  (0) 2021.08.08
Product && develop Environment  (0) 2021.06.30
Github and aws s3 - 2  (0) 2021.06.29
Github and aws s3 - 1  (0) 2021.06.29