-
개인과제 마무리.내일배움캠프/TIL 2022. 12. 26. 01:30
댓글 수정 API
문제
- 댓글의 작성, 조회 API 경로가 /api/posts/:postId/comments 이였다.
댓글 수정의 API경로는
/api/posts/comments/:commentId 이거나,
/api/commets/:commentId 일 것이다.
둘 중 어느것을 선택해야 할 지 의문이다.
시도
- 전자의 경로를 사용한다면 아래의 코드를 통해서 postId를 설정해서 넘겨준다.
/posts경로를 통해 postRouter로 전달 후 */comments를 통해 commentRouter로 전달하게 만들어봤다.
후자의 경우 app.js에 경로설정을 해주고, 또한 posts.js에서도 경로설정을 해주어야 했다.
/api/posts/:postId/comments 와
/api/comments 를 사용하기 때문에..
내가 생각하기엔 후자는 뭔가 똑같은 라우터경로가 두군데서 나눠져 구분된다는게 마음이 불편했다.
그래서 전자의 경우로 선택을 했다.
// 시도 1 // posts.js router.use("*/comments", (req, res, next) => { console.log("commets set postId API"); const temp = req.baseUrl.split("/"); const tempLen = temp.length; const postId = Number(temp[temp.length - 2]); res.locals.postId = postId; next(); }, commentRouter);
알게된것
코드를 체계적인 구분방법을 통해 정리할 필요가 있다고 느꼈다.
게시글 좋아요 API
문제
- 게시글에 좋아요를 누를때 자동으로 Post의 like값을 증가시켜주고 싶었다.
시도
- Post.update(...{likes:+1}...)을 통해서 +1을 시켜주고 싶었지만 제대로 작동되지 않았다.
코드 위에서 검색을해서 값을 받아와서 그 값을 이용해서 +1을 해줘야 하나 싶었지만, 숫자 1올리는거에 뭐 이리 복잡한 연산을 또 거쳐야 하나 생각이 들어 구글로 들어가 검색을 해보았고, increment라는 것을 발견했다.
예제를 보고 사용을 해보니 잘 추가가 되었으며 좋아요 취소를 할때도 -1을 +시켜서 잘 작동이 되었다.
해결
await Like.create({ postId, userId: user.userId }); await Post.increment({ likes:1 }, { where: { postId } }); await Like.destroy({ where: [{ postId }, { userId: user.userId }] }); await Post.increment({ likes:-1 }, { where: { postId } });
알게된것
increment 메소드를 알게되었다.! 값을 n씩 증가!
'내일배움캠프 > TIL' 카테고리의 다른 글
TIL 추후 정리필요 (0) 2022.12.27 노드 심화과정, 추 후 정리필요 (0) 2022.12.27 sequelize를 이용한 게시글 조회, 수정, 삭제 (0) 2022.12.25 TIL (0) 2022.12.23 javascript sort([option]), 포스트맨 쿠키삭제방법 (2) 2022.12.23 - 댓글의 작성, 조회 API 경로가 /api/posts/:postId/comments 이였다.