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.