صفحة بروفايل الفريلانسر (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) تأكد لي وين بالظبط بيضيع الرد؟
السؤال
Zen Eddin Allaham
عندي مشروع 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
0 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.