오늘은 게시글 좋아요 기능 구현을 해보기로 했다. 어젯밤부터 찾아 본 결과, mysql에 관한 게시글 좋아요 기능은 구글링을 해도 잘 나오진 않았다. 대부분은 spring 관련 기능이었고, node.js를 사용한다고 해도, 거의 mongoose를 사용하였다. 그게 구글링 하면서 가장 아쉬웠던 부분이라 느껴졌다.
하지만, 설사 mongoose를 사용했다고 해도, 다른 팀원들이 했다면 여러 github에 들어가서 보고, 분석하고, 흐름을 파악하려고 노력했다.
팀 프로젝트이다보니 조금 부담감은 있지만, 시간이 얼마나 걸리든, 내가 해야만 하는 기능들을 하나둘씩 해낼 것이라는 것이다. 다만, 내가 현재로써, 한가지 걱정되는 부분이 있다면, 아직은 완벽하게 내 것으로 만들기가 힘들다는 부분이다. 다시 말해, 내가 짠 코드에 대해선 설명할 수 있지만, 문법까지 활용해서 어떻게, 왜 라는 질문이 나오면, 그에 해당하는 부분들에 대한 디테일은 설명하기가 조금 어렵다는 것을 느끼고, 그때마다 나는 조금씩 한계를 느낀다.
기능구현한 부분들에 대해서 조금 설명하자면,
좋아요 기능 자체가 빈하트였다가 하트를 누르면 꽉 찬 하트인데, 왜 create 방식을 썼는지 처음엔 이해가 안되었지만, 나중엔 이해가 되었다.
좋아요 버튼을 누른 상태에서 또다시 좋아요 버튼을 눌렀을때, 한번만 가능하도록 했고, 이 기능이 어떻게 취소기능과 연관지어서 설명할 수 있을지는 추가적인 이해가 필요함을 느꼈다.
취소기능을 만들 때, 역시 헷갈렸던 부분은 where 구문이었다. 어디에서 무엇을 삭제해줄 것인가였는데, 여기서 뭘 삭제해 줄 건지 헷갈렸다.
await models.Users.destroy({where: {id:2}});
⇒ 특정 데이터만 삭제 해주기 위해서 where 절 사용
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
⇒ 프로그램이 잘 돌아가고 있다는 부분
console.log(err)