노드 입문주차 코드 리뷰를 보면서 내가 만든 코드를 수정하고 있었다.
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 : 자동으로 생성되는 값