내일배움캠프/TIL

개인과제 마무리.

91song4 2022. 12. 26. 01:30

댓글 수정 API

문제

  1. 댓글의 작성, 조회 API 경로가 /api/posts/:postId/comments 이였다.
    댓글 수정의 API경로는
    /api/posts/comments/:commentId 이거나,
    /api/commets/:commentId 일 것이다.
    둘 중 어느것을 선택해야 할 지 의문이다.

 

시도

  1. 전자의 경로를 사용한다면 아래의 코드를 통해서 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

문제

  1. 게시글에 좋아요를 누를때 자동으로 Post의 like값을 증가시켜주고 싶었다. 

 

시도

  1. 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씩 증가!