javascript - Nestjs MongoDb Skema/Interface Informationsduplikation


Jeg har fulgt instruktionerne for at bruge MongoDb med Nestjs. Jeg har fået tingene til at fungere, men det virker for mig, som om der er en ret unødvendig duplikation af information (ikke DRY). Specifikt ser det ud til, at vi er nødt til at lave Db-skema og også interfaces, der matcher skemaet. I min egen kode ser det sådan ud:

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 af min kode er i dette repo, hvis du vil have mere kontekst. Den officielle eksempel kode er her.

Gør jeg noget forkert, eller er dette virkelig nødvendigt?

Svar #1

Du kan tjekke nest.js typegoose-biblioteket. Biblioteket opretter skemadefinitionen fra en annoteret TypeScript-klasse.

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

Alternativt kan du bruge typeorm med mongodb, hvilket også kun kræver et annoteret TypeScript-interface.