node.js - NestJS (node) - Mengesahkan permintaan mengikut jenis generik


Saya mempunyai dua pengawal NestJS

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

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

... dan pengawal lain, melanjutkan induk

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

Seperti yang anda lihat, Entiti TypeORM diikat dengan pengawal ini sebagai T melalui generik. Dalam kaedah "do(...)" saya menggunakan ClassType sebagai jenis untuk pengesahan, tetapi pengesahan tidak dicetuskan sama sekali tanpa sebarang ralat. Seperti yang saya fahami, ia memerlukan kelas sebenar, bukan jenis, untuk ditakrifkan sebagai DTO.

Soalan saya ialah: Bagaimana saya boleh menggunakan pengesahan pada kaedah "do(...)" hanya menggunakan jenis Entity saya (tidak menggunakan Entity itu sendiri dalam ParentController). Saya tahu generik tidak wujud pada waktu jalan JS, dan sukar untuk membuat pengawal abstrak tanpa mempunyai ciri ini.

P.S. Saya perlu melakukannya tanpa menggunakan komponen nestjsx/crud

Jawapan #1

Anda tidak boleh melakukan itu dengan cara itu. Sebenarnya, itu adalah salah satu sebab mengapa saya mencipta pakej nestjsx/crud yang menggunakan dekorator @Crud() di mana anda menghantar jenis entiti untuk pengesahan.

Satu lagi pilihan - anda boleh mencipta mixin dan menghantar entiti di sana.