اذهب إلى المحتوى

السؤال

نشر

عندي مشروع Angular (standalone, Angular 22) + NestJS backend. عندي مشكلتين متطابقتين بالسلوك:

صفحة بروفايل الفريلانسر (GET /api/freelancers) تفضل عالقة على "Loading profile..." للأبد.

حفظ تعديل البروفايل (PUT /api/freelancers) يفضل الزر عالق على "Saving..." للأبد.

في الحالتين، المشكلة تتحل فقط بعمل Refresh كامل للصفحة — عندها البيانات تظهر صح فورًا.

اللي تأكد منه بالتشخيص:

أضفت console.log جوه next و error في الـ subscribe() خاص ب Angular، وضغطت Save بدون Refresh: ما ظهر أي log إطلاقًا — يعني الـ Observable ما وصله لا نجاح ولا خطأ نهائيًا.

بالمقابل، من لوج الباك اند تأكدت إن الطلب (PUT) نفّذ فعليًا ونجح — البيانات فعلاً تحدّثت في قاعدة البيانات، لكن الـ Response ما وصل الفرونت.

عندي HttpInterceptorFn في Angular (auth interceptor لتجديد التوكن)، فحصته بالتفصيل: منطقه سليم في حالة النجاح (200) — فقط يتدخل في catchError عند 401. فهو مش المسؤول عن ابتلاع ردود ناجحة.

عندي في NestJS @UseInterceptors(ResponseInterceptor) مطبّق على الكنترولر (FreelancerController) على كل من GET وPUT. بما إن نفس السلوك يصير بالطلبين، الشك الحالي إنه المشكلة في هذا الـ ResponseInterceptor تحديدًا — يمكن فيه شي بيعلّق أو RxJS operator ناقص return/completion.

الأكواد ذات الصلة: (فرونت: freelancer.ts + freelancer.html + freelancer.service.ts + auth.interceptor.ts + app.config.ts) و(باك اند: freelancer.controller.ts + freelancer.service.ts + freelancer.repository.ts) — وحاليًا محتاج أرفق كمان ResponseInterceptor بالكامل لأنه القطعة الوحيدة الناقصة من الصورة.

سؤالي للمدربين: هل فيه سبب شائع يخلي NestInterceptor (مو Guard ومو Middleware) يخلّي الـ response يتعلّق رغم إن الـ handler الأساسي رجّع نتيجة صح؟ وهل فيه طريقة تشخيص من جهة NestJS (مثل logging على مستوى الـ interceptor أو request lifecycle) تأكد لي وين بالظبط بيضيع الرد؟

HireHub.zip

Recommended Posts

لا توجد أي إجابات على هذا السؤال بعد

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...