웹사이트 검색

자바스크립트 - Nestjs MongoDb 스키마/인터페이스 정보 중복


저는 Nestjs와 함께 MongoDb를 사용하는 방법에 대한 지침을 따라왔습니다. 다행히 작동은 하지만, 불필요하게 정보가 중복되는 것 같습니다 (DRY하지 않음). 특히, 우리는 Db 스키마를 만들고, 스키마와 일치하는 인터페이스도 만들어야 하는 것 같습니다. 제 코드에서는 이것이 대략 다음과 같이 보입니다:

import { Document, Schema } from 'mongoose';

export interface IBlogPost extends Document {
  subject: string;
  body: string;
  authorId: string;
}

export const BlogPostSchema = new Schema({
  subject: String,
  body: String,
  authorId: String,
});

더 많은 맥락이 필요하다면 나머지 코드는 이 저장소에 있습니다. 공식 예제 코드는 여기에 있습니다.

제가 뭔가 잘못하고 있는 건가요, 아니면 이게 정말 필요한 건가요?

답변 #1

nest.js typegoose 라이브러리를 확인할 수 있습니다. 이 라이브러리는 주석이 달린 타입스크립트 클래스에서 스키마 정의를 생성합니다.

export class Cat extends Typegoose {
  @prop({ required: true })
  name: string;
}

또는 MongoDB와 함께 typeorm을 사용할 수도 있으며, 이 경우에도 하나의 주석이 달린 TypeScript 인터페이스만 필요합니다.