Oct 30, 2021

Sung Hyun Hong (Jenny)·2022년 1월 24일
0

오늘은 게시글 좋아요 기능 구현을 해보기로 했다. 어젯밤부터 찾아 본 결과, mysql에 관한 게시글 좋아요 기능은 구글링을 해도 잘 나오진 않았다. 대부분은 spring 관련 기능이었고, node.js를 사용한다고 해도, 거의 mongoose를 사용하였다. 그게 구글링 하면서 가장 아쉬웠던 부분이라 느껴졌다.

하지만, 설사 mongoose를 사용했다고 해도, 다른 팀원들이 했다면 여러 github에 들어가서 보고, 분석하고, 흐름을 파악하려고 노력했다.

팀 프로젝트이다보니 조금 부담감은 있지만, 시간이 얼마나 걸리든, 내가 해야만 하는 기능들을 하나둘씩 해낼 것이라는 것이다. 다만, 내가 현재로써, 한가지 걱정되는 부분이 있다면, 아직은 완벽하게 내 것으로 만들기가 힘들다는 부분이다. 다시 말해, 내가 짠 코드에 대해선 설명할 수 있지만, 문법까지 활용해서 어떻게, 왜 라는 질문이 나오면, 그에 해당하는 부분들에 대한 디테일은 설명하기가 조금 어렵다는 것을 느끼고, 그때마다 나는 조금씩 한계를 느낀다.

기능구현한 부분들에 대해서 조금 설명하자면,

  1. 아직까지는 middleware 연결 전단계라, 모든 userId를 임시로 지정해 주었고, 가장 어려웠던 부분 where 구문이었다. postId 가 왜 postId로 가는지는 db구조상 얘기할 수 있었지만, userId가 왜 id였는데, userId로 바뀌었는지는 설명하기가 어려웠다.
  1. .create() method

좋아요 기능 자체가 빈하트였다가 하트를 누르면 꽉 찬 하트인데, 왜 create 방식을 썼는지 처음엔 이해가 안되었지만, 나중엔 이해가 되었다.

  1. 이중기능의 좋아요 버튼

좋아요 버튼을 누른 상태에서 또다시 좋아요 버튼을 눌렀을때, 한번만 가능하도록 했고, 이 기능이 어떻게 취소기능과 연관지어서 설명할 수 있을지는 추가적인 이해가 필요함을 느꼈다.

  1. 좋아요의 취소 기능 (.destroy() method)

취소기능을 만들 때, 역시 헷갈렸던 부분은 where 구문이었다. 어디에서 무엇을 삭제해줄 것인가였는데, 여기서 뭘 삭제해 줄 건지 헷갈렸다.

await models.Users.destroy({where: {id:2}});

⇒ 특정 데이터만 삭제 해주기 위해서 where 절 사용

  1. 오류에 대해 배우기

Error: Missing where or truncate attribute in the options parameter of model.destroy.
=> where 구문 빠져서 발생

Executing (default): DELETE FROM Likes WHERE postId = '1' AND userId = 5
DELETE /api/posts/1/like 200 32.502 ms - 142
Executing (default): SELECT id, postId, userId, date FROM Likes AS Like WHERE Like.postId = '1' AND Like.userId = 5 LIMIT 1;
isNotLiked null
DELETE /api/posts/1/like 400 16.258 ms - 67

⇒ 프로그램이 잘 돌아가고 있다는 부분

  1. 가장 중요한 파트

console.log(err)

profile
오늘 하루도 열심히!

0개의 댓글