오늘은 firstcar-v2의 좋아요 기능을 구현했다.
사실 내가 이전에 했던 방식이랑 많이 달라서 이해하는 것에 조금 시간이 걸렸다.
new Promise와 async await에 대해 개념이 조금 더 잘 잡혀진 것 같다.
특히 비동기의 순서를 조금 더 생각하게 되었고 이로써 더 정교한 코드를 짤 수 있었다.
middleware는 조금 더 공부를 해야겠다. 결국 문제를 해결하긴 했지만
내가 원하던 것이 아니라서 조금 찜찜했다.(next를 사용해 원하는 api로 보낼수 없나..?)
이전 방식
이전에는 상세페이지 나타내는 table에 좋아요 숫자와 좋아요를 누른 사람들의 array를 추가하고
array에 좋아요 누른 사람의 이름이 없으면 좋아요를 +1하고 array에 이름을 추가했다.
array에 좋아요 누른 사람이 있으면 좋아요를 -1하고 array에서 이름을 제거했다.
이러한 방식으로 좋아요 중복을 방지했다.
현재 방식
현재는 like table을 추가하여 좋아요를 누른 아이디와 좋아요 대상의 아이디를 추가해 줬다.
좋아요를 누르면 db에서 상세페이지 table에 좋아요를 +1한 후 like table에 좋아요 여부에 true를 줬다.
좋아요를 누른 사람이 또 누르면 db에서 상세페이지 table에 좋아요를 -1한 후 like table에 좋아요 여부에 false를 줬다.
사실 편한것은 이전방식이 더 편했던 것 같다. 이전방식은 db를 한번만 조회하면 되지만
현재의 방식은 db를 두번 조회 해야한다.
현재방식은 테이블도 두개라서 코드가 조금 길어지는 것 같다.
그리고 Front로 상세정보를 넘겨줄 때에도 여러번 조회하고 이를 doc에 정리한 후 넘겨줘야 한다는 불편함도 존재하는 것 같다.
그래서 나는 이전 방식을 조금 더 선호한다.