1/12 TIL

taetae·2023년 1월 12일
0

내배캠 TIL

목록 보기
34/48

▶ 어떤 문제가 있었는지

노드 입문주차 코드 리뷰를 보면서 내가 만든 코드를 수정하고 있었다.
comment 수정하는 API를 작성하고 썬더 클라이언트로 돌려보던 중 수정한 값이 넘어가지 않는 문제를 만났다. postId가 필요하지 않은 API인데 자꾸 postId 값을 찾는 오류 메세지

{
  "message": "Comment validation failed: postId: Cast to ObjectId failed for value \"true\" (type boolean) at path \"postId\" because of \"BSONTypeError\""
}

▶ 내가 시도해본 것들

params에서 불러오는 id값의 문제인가 싶어서 수정도 해보고, db의 문제인가 싶어서 테이블을 새로 만들어도 봤다.


▶ 어떻게 해결 했는지

처음 보는 오류고 구글링으로도 해결이 되지 않아서 튜터님께 문의를 드리고 함께 코드 부분을 확인한 결과 schemas comment.js 파일에 postId의 설정에 오류가 있는 것을 발견했다.

 postId: {
    type: ObjectId,
    default: true, // 수정 전
  },
 postId: {
    type: ObjectId,
    required: true,  // 수정 후
  },

혼자서 오류를 해결하려고 했을 때 스키마의 문제인가 싶어서 보기도 했었는데 default와 required의 차이를 몰라서 넘어갔던 게 화근이었다. 수정 후 코드도 당연히 잘 돌아갔다.

▶ 새롭게 알게된 것

mongoose 스키마의 속성을 잘 몰라 생긴 부분이어서 오늘 내가 혼란스러웠던 속성 두개를 남긴다.

required : 꼭 필요한 값

default : 자동으로 생성되는 값

0개의 댓글