56/99 트러블슈팅? mongoError, url 중복

2022. 7. 3. 21:05항해99 일지

실전 프로젝트를 진행하며 기술적으로 막혔던 부분은 무엇인가요? 해결했다면 어떻게 해결했는지 과정을 작성

 

MongoError: E11000 duplicate key error collection

꽤 많이 만난 에러다. 깔끔하게 콜렉션 드랍하면 해결된다.

아마 이미 추가된 내용과 추가할 내용 사이에 스키마가 변경되면 만날 수 있는 에러인듯하다.

 

CastError: Cast to Number failed for value "like" (type string) at path "postId" for model "Comment"

좋아요 기능 추가중에 만난 에러다. 아마 url이 겹쳐져서 그런듯하다.   

 

 

수정전 댓글삭제 및 수정 url, 좋아요 추가,취소 url

api/board/post/:postId/:commentId
 
api/board/post/like/:postId
 
아마 댓글쪽에서 파라미터로 들어가는 url 을 좋아요 쪽에서는 문자열로 입력하게 돼서 그런 것 같다.
좋아요 쪽에서 어떻게 해결할지 얽매여 있다가 그냥 댓글 쪽 url을 손봤다. 수정 후 에러 해결하였다.
 
api/board/postComment/:postId/:commentId
 
지금 해결해야 하는 부분 중 하나는 좋아요 기능 부분에서 
좋아요를 계속 추가 할 수 있다거나 취소함으로써 마이너스 좋아요까지 갈 수 있다는 점이다.
취소 쪽에서는 아래 코드를 이용하여 Like 콜렉션에 해당 데이터가 없으면 숫자가 내려가지 않게끔 조건을 달아서 해결했지만
좋아요 추가 쪽에서는 최초 좋아요를 할때 콜렉션에 어떤 데이터도 없기때문에 오류가 떴다.
const aleadyLike = await Like.find({ postId });
    let like = existsPost[0]["likes"];
    if (userId === aleadyLike[0].userId) {
      res.status(400).send("이미 좋아요 상태입니다.");
    }
const zeroLike = await Like.find({ postId });
    let like = existsPost[0]["likes"];
    

    if (!zeroLike.length) {
      res.status(400).send("좋아요를 누른 게시물이 아닙니다.");
 
{
  "message": "TypeError: Cannot read properties of undefined (reading 'userId') : like failed"
}
 
어떻게 해결해야할지 논의 중 프론트에서 버튼 하나에 같은 url이고 다른 두개의 메소드로 구분하여 활성화 된 상태와 아닌 상태로
구분 할 수 있다면 그대로 둬도 되기때문에 이후에 논의하고자 한다.