javascript - Nestjs MongoDb Skjema/Grensesnitt Informasjonsduplisering


Jeg har fulgt instruksjonene for å bruke MongoDb med Nestjs. Jeg har fått ting til å fungere, men det virker for meg som om det er en ganske unødvendig duplisering av informasjon (ikke DRY). Spesielt ser det ut til at vi må lage både en Db-skjema og også grensesnitt som samsvarer med skjemaet. I min egen kode ser dette omtrent slik ut:

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,
});

Resten av koden min er i dette depotet hvis du vil ha mer kontekst. Den offisielle eksempel-koden er her.

Gjør jeg noe galt, eller er dette virkelig nødvendig?

Svar #1

Du kan sjekke ut nest.js typegoose-biblioteket. Biblioteket lager skjemadefinisjonen fra en annotert TypeScript-klasse.

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

Alternativt kan du bruke typeorm med mongodb, som også bare trenger ett annotert TypeScript-grensesnitt.