node.js - NestJS (node) - Provjera zahtjeva prema generičkom tipu


Imam dva NestJS kontrolera

export class ParentController<T> {
    constructor(protected service: Service<T>) {}

    @Post()
    do(@Body() dto: ClassType<T>): Promise<T> {
        return this.service.do(dto);
    }
}

... i još jedan kontroler, proširuje roditelja

@Controller('any')
export class AnyController extends ParentController<Entity> {
  constructor(protected service: Service) {
      super(service);
  }
}

Kao što vidite, TypeORM entitet je povezan s ovim kontrolerom kao T putem generika. U metodi "do(...)" koristio sam ClassType kao tip za validaciju, ali validacija se uopće ne pokreće bez ikakvih grešaka. Koliko razumijem, potrebna je točno klasa, a ne tip, kako bi se definiralo kao DTO.

Moje pitanje je: Kako mogu primijeniti validaciju na metodu "do(...)" koristeći samo moj tip Entiteta (ne koristeći sam Entitet u ParentControlleru). Znam da generici ne postoje u JS runtime-u, i teško je napraviti apstraktni kontroler bez ove značajke.

P.S. Moram to napraviti bez korištenja nestjsx/crud komponente

Odgovor #1

Ne možete to učiniti na taj način. Zapravo, to je bio jedan od razloga zašto sam stvorio paket nestjsx/crud koji koristi dekorator @Crud() gdje prosljeđujete tip entiteta za validaciju.

Druga opcija - možete stvoriti mixin i tamo proslijediti entitet.