NestJS — Node.js للمؤسسات

Field Middleware و Mapped Types و CLI Plugin في GraphQL

18 دقيقة الدرس 65 من 80

Field Middleware و Mapped Types و CLI Plugin في GraphQL

يتضمن GraphQL في NestJS أدوات إنتاجية تحافظ على نظافة المخططات مع نموها. يحول Field middleware أو يحمي حقولاً فردية، وتشتق Mapped Types مدخلات التحديث والتصفية، ويقلل CLI plugin المزخرفات المتكررة في مشاريع code-first.

الفكرة الأساسية

تدور هذه الميزة حول التحكم في كيفية تنظيم التطبيق وسلوكه وقت التشغيل. النقاط التالية هي ما يجب أن يعرفه المطور قبل استخدامها في مشروع حقيقي:

  • يعمل Field middleware على حقل محدد ويفيد للتنسيق أو الاهتمامات الخفيفة على مستوى الحقل.
  • تشتق Mapped types مثل PartialType و PickType و OmitType و IntersectionType كائنات DTO دون تكرار الخصائص.
  • تستورد mapped types الخاصة بـ GraphQL من @nestjs/graphql لا من @nestjs/mapped-types عند بناء مدخلات GraphQL.
  • يمكن لـ GraphQL CLI plugin استنتاج كثير من مزخرفات @Field() من بيانات TypeScript.
  • لا تستخدم field middleware لتحميل قاعدة بيانات ثقيل؛ استخدم resolvers وDataLoader لذلك.

مثال عملي

يوضح المثال التالي الشكل العملي للفكرة داخل مشروع NestJS. ليست الغاية حفظ الكود، بل فهم مكانه في المعمارية:

@InputType() export class CreateUserInput { @Field() email: string; @Field() displayName: string; } @InputType() export class UpdateUserInput extends PartialType(CreateUserInput) {} @Field(() => String, { middleware: [upperCaseMiddleware] }) displayName: string;
ملاحظة تصميمية: تحافظ هذه الأدوات على استدامة صيانة المخطط. كل نوع إدخال مكرر يصبح خطراً مستقبلياً للانحراف؛ تحافظ mapped types على العلاقة صريحة.

قائمة تطبيق إنتاجية

  • استخدم مساعدات mapped types الخاصة بـ GraphQL لكائنات DTO الخاصة به.
  • احصر field middleware في العمل الخفيف المتزامن.
  • فعّل CLI plugin بعد فهم مخرجات المخطط المولدة.
  • احتفظ بلقطة SDL في الاختبارات عندما تهم استقرارية المخطط.
قاعدة عملية: إذا جعلت الميزة الحدود أوضح والاختبارات أسهل فهي اختيار جيد. إذا أخفت التبعيات أو صعّبت التتبع، فأعد التصميم.

الخلاصة

يغطي هذا الدرس جزءاً متقدماً من NestJS يجب فهمه عند بناء تطبيقات مؤسسية. ركّز على الحدود الواضحة، والسلوك القابل للاختبار، واختيار الأداة المناسبة للسياق بدلاً من استخدام كل ميزة في كل مكان.