node.js - NestJS (node) - التحقق من الطلب حسب النوع العام
لدي وحدتان تحكمان في NestJS
export class ParentController<T> {
constructor(protected service: Service<T>) {}
@Post()
do(@Body() dto: ClassType<T>): Promise<T> {
return this.service.do(dto);
}
}
... ووحدة تحكم أخرى، تمتد من الأصل
@Controller('any')
export class AnyController extends ParentController<Entity> {
constructor(protected service: Service) {
super(service);
}
}
كما ترى، كيان TypeORM مرتبط بهذا المتحكم باسم T عبر الأنواع العامة. في طريقة "do(...)" استخدمت ClassType كنوع للتحقق، لكن التحقق لم يتم تنشيطه على الإطلاق دون ظهور أي أخطاء. حسب فهمي، يلزم تعريف فئة بالضبط، وليس نوع، كـ DTO.
سؤالي هو: كيف يمكنني تطبيق التحقق على الطريقة "do(...)" باستخدام نوع الكيان الخاص بي فقط (دون استخدام الكيان نفسه في ParentController). أنا أعلم أن الأنواع العامة غير موجودة في وقت تشغيل JS، ومن الصعب إنشاء وحدة تحكم مجردة دون وجود هذه الميزة.
ملاحظة: أحتاج إلى القيام بذلك دون استخدام مكون nestjsx/crud
الإجابة رقم 1
لا يمكنك فعل ذلك بهذه الطريقة. في الواقع، كان ذلك أحد الأسباب التي جعلتني أنشئ حزمة nestjsx/crud التي تستخدم المزخرف @Crud() حيث تمرر نوع الكيان للتحقق من الصحة.
خيار آخر - يمكنك إنشاء مزيج وتمرير كيان هناك.