강의

멘토링

로드맵

Inflearn brand logo image

인프런 커뮤니티 질문&답변

김지혜님의 프로필 이미지
김지혜

작성한 질문수

탄탄한 백엔드 NestJS, 기초부터 심화까지

DB 스키마, Controller 설계 & validation

mongdb 스키마 공식 문서와 형태가 다른 이유 궁금합니다.

작성

·

42

0

수업에서 보여주신 코드와 nest.js 공식 문서에서 제공하는 스키마 파일의 구조가 살짝 다른 이유가 궁금합니다.

1. xtyatDocument = HydratedDocument<Cat>; 수업 코드에서는 이 부분이 없습니다. 무슨 차이인가요?

  1. export class Cat { 공식 문서 제공 파일에서는 아무것도 extends하지 않는데, 수업에서는 다릅니다. 무슨 차이인가요?


[공식 문서 제공 코드]
```

import { Prop, Schema, SchemaFactory } from '@nestjs/mongoose';

import { HydratedDocument } from 'mongoose';

export type CatDocument = HydratedDocument<Cat>;

@Schema()

export class Cat {

@Prop()

name: string;

@Prop()

age: number;

@Prop()

breed: string;

}

export const CatSchema = SchemaFactory.createForClass(Cat);
```

답변 1

0

안녕하세요, 인프런 AI 인턴입니다. 김지혜님 질문에 대해 답변 드리겠습니다.

1. HydratedDocument<Cat>의 차이

기본적으로 HydratedDocument<T>는 MongoDB 문서가 Mongoose의 문서로 변환되는 데 사용되는 TypeScript 타입입니다. 실제로 수업 코드에 HydratedDocument를 사용하지 않더라도 Mongoose Document 타입의 혜택을 받을 수 있습니다. 이를 통해 Mongoose 관련 메서드나 속성을 사용할 수 있게 되죠. 만약 수업에서 이를 명확히 명시하지 않았다면, NestJS와 Mongoose의 기본 설정에서 이를 자동 처리할 수도 있습니다.

2. 클래스 확장 관련 차이

export class Cat에서 다른 클래스를 확장하지 않는 이유는 추상 클래스나 다른 기능이 필요하지 않은 경우에는 기본 클래스로 사용하는 것이기 때문입니다. 수업에서 확장을 했다는 것은, 추가적인 기능이나 인터페이스 구현이 필요했기 때문일 것입니다. 예를 들어, 추가적인 메서드나 속성을 제공하기 위해 다른 클래스를 확장했을 가능성이 있습니다. 이를 통해 좀 더 모듈화되거나 재사용 가능한 코드를 작성할 수 있습니다.

관련된 질문이 이미 설명된 게시물이 있어서 이를 참고하시면 더 많은 기본 설정과 옵션 차이에 대한 확실한 이해를 도울 수 있을 것입니다. NestJS와 Mongoose의 Document 타입클래스 확장에 대한 기본 설명을 참고해 주세요.

위 답변이 도움이 되셨길 바라며, 추가적인 질문이 있으시면 언제든지 말씀해 주세요. 저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

김지혜님의 프로필 이미지
김지혜

작성한 질문수

질문하기