NestJS · MongoDB

Mongoose 연동의 스키마와 모델 경계

Mongoose를 NestJS에 붙일 때는 연결 코드보다 schema 정의, model 주입, document 변환, index와 validation의 책임을 구분해야 한다.

01

연결 설정

root module에서 Mongo URI와 connection option을 환경별로 주입한다.

02

스키마 등록

feature module에서 schema와 model name을 등록해 provider로 사용할 수 있게 한다.

03

모델 주입

service가 @InjectModel로 model을 받아 query와 저장을 수행한다.

04

응답 변환

Mongoose document 내부 필드를 API DTO로 매핑해 노출 범위를 통제한다.

Schema
문서 계약 필드 타입, required, default, index, timestamps를 정의
애플리케이션 validation과 중복 보완
Model
쿼리 실행 find, create, updateOne, aggregate를 제공
lean 사용 여부 결정
ObjectId
문서 식별자 문자열 param을 ObjectId로 검증·변환
잘못된 id는 400 또는 404 기준
Index
조회 성능 필터와 정렬 패턴에 맞춘 index 설계
쓰기 비용 증가

모듈 · 검증 · 노출 점검

모듈 model provider가 필요한 module에 등록돼 있다.
검증 DTO validation과 schema validation의 역할이 분명하다.
노출 _id, __v, 내부 상태를 응답에 그대로 흘리지 않는다.
성능 목록 조회에 index와 pagination이 있다.