CQRS مع NestJS: دليل عملي بلا تعقيد
22 أبريل 20267 دقائق قراءة
NestJSCQRSBackendPostgreSQL
جوهر CQRS
ببساطة، يفصل CQRS بين الأوامر (الكتابة) والاستعلامات (القراءة). في NestJS، توفر حزمة @nestjs/cqrs ناقل أوامر CommandBus وناقل استعلامات QueryBus — وهذا كل ما تحتاجه للبدء.
الهيكلة التي أستخدمها
modules/articles/
├── articles.module.ts
├── articles.controller.ts
├── dto.ts
├── commands.ts # أصناف الأوامر ومعالجاتها
└── queries.ts # أصناف الاستعلامات ومعالجاتها
تبقى المتحكمات بسيطة: تتحقق من المدخلات عبر DTO ثم ترسلها إلى الناقل.
لماذا العناء؟
- قابلية الاختبار — المعالجات أصناف صغيرة بمهمة واحدة.
- الوضوح — كل تغيير في حالة النظام له أمر مسمّى.
- مسار النمو — عندما تحتاج الأحداث أو نماذج قراءة منفصلة، تكون الفواصل جاهزة.
متى تتجاوزه؟
خدمة CRUD بثلاث نقاط وصول لا تحتاج CQRS. اعتمده عندما يبدأ منطق نطاقك بالتفرع — وليس قبل ذلك.