دورة تطوير نظام إدارة الأعراس والمناسبات ودعوات QR عمليًا

التحقق من المدخلات ومعالجة الأخطاء

التحقق من المدخلات ومعالجة الأخطاء — نظام إدارة الأعراس والمناسبات ودعوات QR | Next.js وPrisma | أديب الصلوي
وقت الدراسة
12 دقيقة

المسار: تطوير نظام إدارة الأعراس ودعوات QR الوحدة: واجهات API والبنية الخلفية

مدخل إلى الدرس: التحقق من المدخلات ومعالجة الأخطاء

التحقق من المدخلات ومعالجة الأخطاء — نظام إدارة الأعراس والمناسبات ودعوات QR | Next.js وPrisma | أديب الصلوي

طريقة الدراسة: اقرأ التعريف، تتبّع المثال في الشرح، نفّذه بنفسك، ثم اختبر النتيجة والحالات الاستثنائية قبل الانتقال.

أهداف هذا الدرس

  • تطبيق تحقق صندوقي على كل واجهة إنشاء/تعديل.
  • توحيد معالجة أخطاء Prisma المعروفة (P2002...).
  • رد رسائل عربية مفهومة دون كشف تفاصيل داخلية.

مثال

import { Prisma } from "@prisma/client";

export async function handleAction(fn: () => Promise) {
  try {
    return await fn();
  } catch (err) {
    if (err instanceof Prisma.PrismaClientKnownRequestError) {
      if (err.code === "P2002")
        return NextResponse.json(
          { ok: false, error: "قيمة مكررة: " + (err.meta?.target ?? "عمود") },
          { status: 409 }
        );
      if (err.code === "P2003")
        return NextResponse.json(
          { ok: false, error: "مرجع غير موجود (كسر تكامل)" },
          { status: 400 }
        );
    }
    console.error("Internal:", err);
    return NextResponse.json(
      { ok: false, error: "خطأ internal غير متوقع" },
      { status: 500 }
    );
  }
}
كود Prismaأولهما يفعلهالرسالة للمستخدم
P2002تكرار فريدهلع الكتابةقيمة موجودة بالفعل
P2003FK مفقودصلة في صلاحيةمعطى مرجع غير صالح
P2025سجل غير موجودfindFirst/update فشللا يوجد هذا السجل
P2000طول زائدالقيمة أطول من العمودقيمة طويلة جداً

المخطط: توزيع مسؤولية معالجة الأخطاء

flowchart TD
    U["الواجهة (form/scan)"] --> M["موحّد (handleAction)
التحقق الميداني (zod)
رصد أخطاء Prisma"] M --> R{"Success / Error"} R --> S["الشاشة تعرض رسالة حسب حالة ok"]

تمرين تطبيقي: ضع فحصاً يرفض phone أطول من 15 حين إضافة ضيف، ثم أضف try/catch موحداً يُرجع 400 برسالة واضحة، واختبره بطول كبير.

أخطاء شائعة يجب تفاديها

  • ترك أخطاء Prisma تصدر نصوصاً إنجليزية خام (P2002...).
  • الاستمرار بـ console.error بعد الرد الصريح فتسرب تلميحات.
  • التحقق اليدوي بلا زود في الهوية — تُخترق بأن يكسر الحقل الطوابق.

معجم مصطلحات الدرس

P2002
رمز خطأ Prisma عن تكرار قيد فريد.
zod
مكتبة تحقق صارم من تصميم Typescript (سيُدخل في الفصل القادم).
خرائط أخطاء
جدول يدوي يعيد ترجمة رموز قاعدة إلى رسائل عربية.

مراجعة وتمرين تثبيت المهارة

اختبار سريع: اشرح بعبارتك معنى «التحقق من المدخلات ومعالجة الأخطاء»، ثم بيّن أين ستستخدمه داخل نظام تسجيل حضور دعوات مناسبة عبر رمز QR، وما الخطأ الذي يجب اختباره قبل الاعتماد على الحل.

تحدٍّ إضافي: غيّر شرطًا واحدًا في التطبيق، وتوقع النتيجة، ثم نفّذ الاختبار وفسّر الاختلاف.

دروس نصية

#1

نظرة عامة على الدورة والمخرجات

#2

مقدمة إلى Next.js وأسباب اختياره

#3

أساسيات schema.prisma والنماذج

#4

مقدمة Route Handlers وبنية الاستجابة

#5

فهم Server Components والجلب الآمن

#6

تصميم الرمز Secured والتوقيع HMAC

#7

بناء الإنتاج وتجنّب أخطاء الحالة المربكة

#8

تحليل المتطلبات وتحديد الكيانات

#9

إنشاء مشروع Next.js وتجربته

#10

نموذج المناسبة Event بالعلاقات

#11

واجهة إنشاء المناسبة POST /api/events

#12

تصميم صفحة الدعوة الإلكترونية

#13

توليد صورة QR من قاعدة الدعوة

#14

نشر المشروع على Vercel

#15

تصميم قاعدة البيانات والعلاقات

#16

تجريب PostgreSQL محلياً وإنشاء قاعدة الداتا

#17

نموذج المدعو Guest مع الرمز الموقّع

#18

واجهات الضيوف الإضافة والقائمة

#19

نموذج الرد RSVP التفاعلي

#20

تجربة المسح في بوابة الحفل

#21

قاعدة بيانات إنتاج مُدارة وأمانها

#22

تدفق الدعوة وقراءة QR من التوليد إلى الحضور

#23

تثبيت Prisma والاتصال بالقاعدة

#24

نموذج الرد Rsvp ومنع التكرار

#25

واجهة تسجيل الحضور POST /api/checkin

#26

صفحة قائمة الضيوف والفرز

#27

واجهة تتفهم حالة الحضور والحصر

#28

إدارة المتغيرات السرية بيئة وواجهة

#29

سيناريو المشروع وقواعد العمل

#30

بنية مجلدات المشروع ومسارات الصفحات

#31

الاستعلام والجلب مع العلاقات

#32

التحقق من المدخلات ومعالجة الأخطاء

#33

لوحة الإحصائيات الحية

#34

تأمين الروابط والهجمات الشائعة

#35

قائمة الفحص النهائي قبل الإطلاق

#36

الترحيلات migrations والبذور seed

عرض الدروس كاملة تحقق من صفحة تعلم الدورة
درس نصي 5/36
أنت تشاهد
التحقق من المدخلات ومعالجة الأخطاء