Ricerca nel sito web

javascript - Nestjs MongoDb Schema/Interfaccia Informazioni Duplicazione


Ho seguito le istruzioni per usare MongoDb con Nestjs. Sono riuscito a far funzionare le cose, tuttavia mi sembra che ci sia una duplicazione di informazioni piuttosto inutile (non DRY). In particolare, sembra che siamo obbligati a creare lo schema del database e anche le interfacce che corrispondono allo schema. Nel mio codice questo appare più o meno così:

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

Il resto del mio codice è in questo repository se vuoi più contesto. Il codice di esempio ufficiale è qui.

Sto facendo qualcosa di sbagliato o questo è davvero necessario?

Risposta n. 1

Puoi dare un'occhiata alla libreria nest.js typegoose. La libreria crea la definizione dello schema da una classe TypeScript annotata.

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

In alternativa puoi usare typeorm con mongodb, che necessita solo di un'interfaccia TypeScript annotata.