mongoose objectId _id 필드 이름 변경

KIXIAM·2022년 12월 19일
1

mongoose

목록 보기
1/1
post-thumbnail

TIL_221219

12월 19일 날씨 너무 추움

결국 오늘이 되서야..

정말 많은 시간과 안구 건조증이 함께 했다.

저번주에 끝끝내 해결하지 못한 문제를 오늘 해결(?)하게 되었다. 엄밀히 말하면 해결보단 자연스레 알게 되었다. 스택오버플로우에서 내가 눌렀던 게시물 중에서도 있었지만 채택된 답변 위주로 봐서 그런지 찾아내서 적용하지 못했다.


ObjectId Type을 활용하여 _id필드 값의 이름 변경을 원하였는데 해결을 하지 못했었다.

해결책!

// Duplicate the ID field.
Schema.virtual('userId').get(function(){
    return this._id.toHexString();
});
// Ensure virtual fields are serialised.
Schema.set('toJSON', {
    virtuals: true
});

위 코드와 같이 virtual함수를 활용하여 _id의 값을 toHexString 화 하여 userId란 임의로 정해준 필드에 저장해준다. 그리고 아래 바로 해당 스키마(Schema)에서 생성한 모델에서 toJSON이 호출될 때마다 Mongo가 생성하는 _id 필드와 일치하는 userId 필드가 포함되어 아래 사진과 같이 개발자환경에서 나타난다. 마찬가지로 동일한 방식으로 toObject에 대한 동작을 설정할 수 있다.

각각의 Schema에서 똑같이 _id로 추출되기 때문에 고유한 필드네임이 필요해서 찾게 되었고 결국에 이렇게 잘나온다 ㅜ 허무했지만서도 결국엔 4일이라는 시간동안 맘을 놓을 수 없었던 나에게 좀 대견하다고 칭찬하고 싶다.

스스로의 힘으로 빠르게 찾아낼 수 없었던..

한 가지 아쉬웠던 것은 해당 게시물(해결책)을 문제점을 인식하고 바로 접속을 하긴 했었다는 것이다. 하지만 내 코드에 적용해보지는 못했다. 아직 코드 작성과 구조에 익숙지 않아서 였던것으로 위로를 건네본다..


결론 그리고 고칠 점

자료를 찾는 것에는 좋은 검색어가 그만큼 필요하고 영어를 좀 더 정확히 자세히 읽어봐야 할 것 같다. 영어공부를 게을리 하지말자. 문서를 계속 읽어보고 겁내지 않고 적용해보는 좋은 습관을 기르자.

참고한 사이트

profile
Project Oriented Learning 🔥

0개의 댓글