javascript - Nestjs MongoDb Shema/Interfejs Informacije Duplikacija


Pratim upute za korištenje MongoDb-a s Nestjs-om. Sve sam uspio postaviti tako da radi, međutim čini mi se da postoji prilično nepotrebno dupliciranje informacija (nije DRY). Konkretno, čini se da smo obavezni napraviti Db šemu, kao i sučelja koja odgovaraju šemi. U mom vlastitom kodu to izgleda ovako:

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

Ostatak mog koda je u ovom repozitoriju ako želiš više konteksta. Službeni primjer koda je ovdje.

Radim li nešto krivo ili je ovo stvarno potrebno?

Odgovor #1

Možete pogledati nest.js typegoose biblioteku. Biblioteka stvara definiciju sheme iz anotirane TypeScript klase.

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

Alternativno možete koristiti typeorm s mongodb-om, koji također treba samo jedan anotirani TypeScript sučelje.