إضافة وظائف جديدة إلى تطبيق الويب بسرعة باستخدام إضافات Firebase

1- مقدمة

الأهداف

في هذا الدليل التعليمي حول الرموز البرمجية، ستضيف وظيفة إلى تطبيق سوق على الإنترنت باستخدام إضافات Firebase. من خلال هذا الدليل التعليمي، ستتعرّف على كيفية مساعدة الإضافات في تقليل الوقت الذي تقضيه في مهام تطوير التطبيقات وإدارتها.

3b6977f679c67db.png

التطبيق الذي ستصممه

في هذا الدرس التطبيقي حول الترميز، ستضيف الميزات التالية إلى تطبيق ويب لسوق على الإنترنت:

  • تحميل الصور بشكل أسرع لزيادة معدّل الحفاظ على المستخدمين
  • الحد من الإدخالات في قاعدة بياناتك لتحسين الأداء وخفض فاتورتك
  • تنفيذ ميزة الحذف التلقائي لبيانات المستخدمين القديمة لتعزيز حماية بيانات المستخدمين

ما ستتعرّف عليه

  • كيفية اكتشاف الإضافات لحالات الاستخدام الشائعة
  • كيفية تثبيت إضافة وضبطها في مشروعك
  • كيفية صيانة الإضافات في مشروعك (مراقبتها وتحديثها وإلغاء تثبيتها)

يركز هذا الدرس التطبيقي حول الترميز على "إضافات Firebase". للحصول على معلومات تفصيلية عن منتجات Firebase الأخرى المذكورة في هذا الدليل التعليمي للترميز، يُرجى الرجوع إلى مستندات Firebase والأدلة التعليمية للترميز الأخرى.

المتطلبات

  • كمبيوتر مزوّد بمتصفّح ويب حديث (ننصح باستخدام Chrome)
  • حساب Google

2- إنشاء مشروع على Firebase وإعداده

إنشاء مشروع على Firebase

  1. في وحدة تحكّم Firebase، انقر على إضافة مشروع، واسمِ مشروع Firebase FriendlyMarket.
  2. انقر على خيارات إنشاء المشروع. اقبل بنود Firebase. تخطّى إعداد "إحصاءات Google" لأنّك لن تستخدم "إحصاءات Google" في هذا التطبيق.
  3. انتظِر حتى يتم توفير المشروع، ثم انقر على متابعة.

يستخدم التطبيق الذي ستُنشئه بعض منتجات Firebase المتاحة لتطبيقات الويب:

  • Firebase Authentication لتحديد هوية المستخدمين بسهولة
  • قاعدة بيانات Firebase في الوقت الفعلي لحفظ البيانات المنظَّمة في السحابة الإلكترونية والحصول على إشعار فوري عند تعديل البيانات
  • Cloud Storage لبرنامج Firebase لحفظ الصور في السحابة الإلكترونية

ستفعّل الآن منتجات Firebase هذه وتضبطها باستخدام "وحدة تحكّم Firebase".

ترقية خطة أسعار Firebase

لاستخدام "إضافات Firebase" وخدمات السحابة الإلكترونية الأساسية بالإضافة إلى "مساحة تخزين Cloud لبرنامج Firebase"، يجب أن يكون مشروعك على Firebase مُدرَجًا في خطة الأسعار "الدفع حسب الاستخدام" (Blaze)، ما يعني أنّه مرتبط بحساب على Cloud Billing.

لترقية مشروعك إلى خطة Blaze، اتّبِع الخطوات التالية:

  1. في "وحدة تحكّم Firebase"، اختَر ترقية خطتك.
  2. اختَر خطة Blaze. اتّبِع التعليمات الظاهرة على الشاشة لربط حساب "فوترة على Cloud" بمشروعك.
    إذا كنت بحاجة إلى إنشاء حساب "فوترة على Cloud" كجزء من هذه الترقية، قد تحتاج إلى الرجوع إلى مسار الترقية في وحدة تحكّم Firebase لإكمال الترقية.

تفعيل تسجيل الدخول باستخدام البريد الإلكتروني

على الرغم من أنّ عملية المصادقة ليست محور هذا الدليل التعليمي، من المهم توفير شكل من أشكال المصادقة في تطبيقك لتحديد هوية كل مستخدم بشكل فريد. ستستخدم تسجيل الدخول باستخدام البريد الإلكتروني.

  1. في وحدة تحكّم Firebase، انقر على تطوير في اللوحة اليمنى.
  2. انقر على المصادقة، ثم انقر على علامة التبويب طريقة تسجيل الدخول (أو انقر على هذا الرابط للانتقال مباشرةً إلى علامة التبويب طريقة تسجيل الدخول).
  3. انقر على البريد الإلكتروني/كلمة المرور في قائمة مزوّدو خدمة تسجيل الدخول، واضبط مفتاح التبديل تفعيل على وضع "تفعيل"، ثم انقر على حفظ.

ed0f449a872f7287.png

تفعيل "قاعدة بيانات الوقت الفعلي"

يستخدم التطبيق قاعدة بيانات Firebase في الوقت الفعلي لحفظ السلع المعروضة للبيع.

  1. في اللوحة اليمنى من "وحدة تحكّم Firebase"، وسِّع الإنشاء، ثم اختَر قاعدة بيانات في الوقت الفعلي.
  2. انقر على إنشاء قاعدة بيانات.
  3. اختَر موقعًا لقاعدة بياناتك، ثم انقر على التالي.
    بالنسبة إلى التطبيق الحقيقي، عليك اختيار موقع قريب من المستخدمين.
  4. انقر على البدء في وضع الاختبار. اقرأ بيان إخلاء المسؤولية عن قواعد الأمان.
    في الخطوات التالية من هذا البرنامج التعليمي، ستضيف قواعد أمان لتأمين بياناتك. لا توزِّع تطبيقًا علنًا أو تعرضه بدون إضافة قواعد أمان لقاعدة بياناتك.
  5. انقر على إنشاء.

ضبط قواعد الأمان لقاعدة بياناتك

ستضبط الآن قواعد الأمان اللازمة لهذا التطبيق. في ما يلي بعض الأمثلة على القواعد الأساسية للمساعدة في تأمين تطبيقك. تسمح هذه القواعد لأي مستخدم بعرض السلع المعروضة للبيع، ولكن لا تسمح هذه القواعد إلا للمستخدمين الذين سجّلوا الدخول بإجراء عمليات القراءة والكتابة الأخرى. لا داعي للقلق بشأن تفاصيل هذه القواعد، فما عليك سوى نسخها ولصقها لتشغيل تطبيقك.

  1. في أعلى لوحة بيانات "قاعدة بيانات الوقت الفعلي"، انقر على علامة التبويب القواعد.

e233a24a38b37e95.png

  1. انسخ مجموعة القواعد التالية والصقها في حقل القواعد في علامة التبويب القواعد:
    {
      "rules": {
        ".read": false,
        ".write": false,
          "drafts": {
            ".indexOn": "seller",
            ".read": "auth.uid !== null",
            ".write": "auth.uid !== null"
        },
        "sellers": {
            ".read": "auth.uid !== null",
            ".write": "auth.uid !== null"
        },
          "forsale": {
            ".read": true,
            ".write": "auth.uid !== null"
          }
      }
    }
    
  2. انقر على نشر.

إعداد "مساحة التخزين في السحابة الإلكترونية" لبرنامج Firebase

يستخدم التطبيق ميزة "التخزين في السحابة الإلكترونية" من Firebase لحفظ صور السلع المعروضة للبيع.

في ما يلي كيفية إعداد ميزة "التخزين في السحابة الإلكترونية" لبرنامج Firebase في مشروعك على Firebase:

  1. في اللوحة اليسرى من وحدة تحكّم Firebase، وسِّع الإصدار، ثم اختَر مساحة التخزين.
  2. انقر على البدء.
  3. اختَر موقعًا جغرافيًا لحزمة التخزين التلقائية.
    يمكن للحِزم في US-WEST1 وUS-CENTRAL1 وUS-EAST1 الاستفادة من المستوى"مجاني دائمًا" في Google Cloud Storage. تخضع الحِزم في جميع المواقع الجغرافية الأخرى لأسعار Google Cloud Storage واستخدامها.
  4. انقر على البدء في وضع الاختبار. اقرأ بيان إخلاء المسؤولية عن قواعد الأمان.
    في الخطوات التالية من هذا البرنامج التعليمي، ستضيف قواعد أمان لتأمين بياناتك. لا توزِّع تطبيقًا علنًا أو تعرضه بدون إضافة قواعد أمان لحزمة التخزين.
  5. انقر على إنشاء.

إعداد قواعد الأمان لحزمة التخزين

عليك الآن ضبط قواعد الأمان اللازمة لهذا التطبيق. لا تسمح هذه القواعد إلا للمستخدمين الذين تم إثبات هويتهم بنشر صور جديدة، ولكنها تسمح لأي مستخدم بعرض صورة سلعة مُدرَجة.

  1. في أعلى لوحة بيانات مساحة التخزين، انقر على علامة التبويب القواعد.

e7003646b429500b.png

  1. انسخ مجموعة القواعد التالية والصقها في حقل القواعد في علامة التبويب القواعد:
    rules_version = '2';
    service firebase.storage {
      match /b/{bucket}/o {
    
        match /{allPaths=**} {
          allow read, write: if request.auth != null;
        }
    
        match /friendlymarket/{ImageId} {
          allow read;
          allow write: if request.auth != null;
        }
    
      }
    }
    
  2. انقر على نشر.

3- تشغيل نموذج التطبيق

إنشاء نسخة من مشروع StackBlitz

في هذا الدرس التطبيقي حول الترميز، يمكنك إنشاء تطبيق ونشره باستخدام StackBlitz، وهو محرِّر على الإنترنت يتضمّن العديد من عمليات سير العمل في Firebase. لا يتطلّب StackBlitz تثبيت أي برامج أو حساب StackBlitz خاص.

يتيح لك StackBlitz مشاركة المشاريع مع الآخرين. يمكن للمستخدمين الآخرين الذين لديهم عنوان URL لمشروعك على StackBlitz الاطّلاع على الرمز البرمجي وإنشاء نسخة من مشروعك، ولكن لا يمكنهم تعديل مشروعك على StackBlitz.

  1. انتقِل إلى عنوان URL هذا للحصول على الرمز البرمجي الأوّلي: https://stackblitz.com/edit/friendlymarket-codelab.
  2. في أعلى صفحة StackBlitz، انقر على Fork (نسخ).

22c44cf92ed26208.png

لديك الآن نسخة من الرمز البرمجي الأوّلي كمشروع StackBlitz خاص بك. بما أنّك لم تسجِّل الدخول، تم تسمية "حسابك" باسم @anonymous، ولكن لا بأس بذلك. أن يكون للمشروع اسم فريد وعنوان URL فريد يتم حفظ جميع ملفاتك وتغييراتك في مشروع StackBlitz هذا.

إضافة تطبيق ويب على Firebase إلى المشروع

  1. في StackBlitz، اطّلِع على ملف src/firebase-config.js. هذا هو المكان الذي ستضيف فيه عنصر إعدادات Firebase.
  2. في "وحدة تحكّم Firebase"، انتقِل إلى صفحة النظرة العامة على مشروعك بالنقر على نظرة عامة على المشروع في أعلى يمين الصفحة.
  3. في وسط صفحة النظرة العامة على مشروعك، انقر على رمز الويب 58d6543a156e56f9.png لإنشاء تطبيق ويب جديد على Firebase. 88c964177c2bccea.png
  4. سجِّل التطبيق باسم FriendlyMarket Codelab.
  5. في هذا الدرس التطبيقي حول الترميز، لا تضع علامة في المربّع بجانب إعداد ميزة "استضافة Firebase" لهذا التطبيق أيضًا. ستستخدم لوحة معاينة StackBlitz بدلاً من ذلك.
  6. انقر على تسجيل التطبيق.
  7. انسخ عنصر إعدادات Firebase لتطبيقك إلى الحافظة. لا تنسخ علامات <script>. ملاحظة: إذا أردت العثور على الإعدادات لاحقًا، اتّبِع التعليمات الواردة هنا.

6c0519e8f48a3a6f.png

  1. انقر على متابعة إلى وحدة التحكّم.

أضِف إعدادات مشروعك إلى تطبيقك:

  1. في StackBlitz، انتقِل إلى ملف src/firebase-config.js.
  2. الصِق مقتطف الإعداد في الملف. بعد إجراء ذلك، من المفترض أن يظهر على النحو التالي (ولكن مع إدخال قيم مشروعك في كائن الإعدادات):

177602cbe84f873d.png

ما هي نقطة البداية لهذا التطبيق؟

اطّلِع على المعاينة التفاعلية على الجانب الأيمن من شاشة StackBlitz:

f3ec800f27fa49b7.png

يبدأ هذا الدليل التعليمي للرموز البرمجية بعرض رمز تطبيق سوق أساسي. ويمكن لأي مستخدم عرض قائمة بالعناصر المعروضة للبيع والنقر على رابط لعرض صفحة تفاصيل أحد العناصر. إذا كان المستخدم مسجّلاً الدخول، ستظهر له معلومات الاتصال الخاصة بالبائع حتى يتمكّن من التفاوض على السعر وشراء السلعة.

جرِّب التطبيق باتّباع الخطوات التالية:

  1. سجِّل الدخول باستخدام الزر في أعلى الشاشة الرئيسية. يمكنك استخدام عنوان بريد إلكتروني واسم وكلمة مرور مزيّفين.
  2. انقر على الزر بيع سلعة في أسفل يسار الصفحة لإنشاء بطاقة بيانات.
  3. في حقل العنوان، أدخِل Xylophone.
  4. بالنسبة إلى السعر المطلوب، أدخِل 50.
  5. بالنسبة إلى وصف السلعة، أدخِل ما يلي: This high quality xylophone can be used to play music.
  6. نزِّل هذه الصورة لآلة موسيقية على جهاز الكمبيوتر، وحمِّلها باستخدام الزر صورة السلعة.

  1. بعد ملء جميع الحقول وتحميل صورة، انقر على نشر.
  2. ابحث عن بطاقة بياناتك الجديدة. انقر على المنتج لعرض شاشة تفاصيله، ثم وسِّع لوحة معلومات التواصل مع البائع.
  3. ارجع إلى وحدة تحكُّم Firebase. في لوحة بيانات قاعدة البيانات، سيظهر لك الآن إدخال للعنصر الذي نشرته ضمن عقدة forsale. في لوحة بيانات مساحة التخزين، ستعثر أيضًا على الصورة التي حمّلتها في مسار friendlymarket.

4. العثور على إضافة وتثبيتها

المشكلة

بعد إجراء بعض الأبحاث حول المستخدِمين لتطبيقك، تبيّن لك أنّ معظم المستخدِمين يزورون موقعك الإلكتروني من هواتفهم الذكية وليس من أجهزة الكمبيوتر المكتبي. ومع ذلك، تُظهر إحصاءاتك أيضًا أنّ مستخدمي الأجهزة الجوّالة يميلون إلى مغادرة موقعك الإلكتروني ("الإيقاف النهائي") بعد بضع ثوانٍ فقط.

أريد معرفة ما إذا كنت تختبر موقعك الإلكتروني باستخدام سرعات الاتصال بالأجهزة الجوّالة. (يمكنك الاطّلاع على كيفية إجراء ذلك هنا). إذا لاحظت أنّ تحميل الصور يستغرق وقتًا طويلاً جدًا وأنّه لا يتم تخزينها مؤقتًا في المتصفّح على الإطلاق ويُستغرَق هذا الوقت الطويل في تحميل كل صفحة.

الحلّ

بعد الاطّلاع على كيفية تحسين الصور، قرّرت اتّخاذ خطوتَين لتحسين أداء تحميل الصور:

  • ضغط الصور: حتى الهواتف الجوّالة تلتقط صورًا بدرجة دقة أعلى بكثير من اللازم لتلبية احتياجات هذا التطبيق. سيؤدي تقليل حجم الملف إلى تسريع أوقات التحميل بدون انخفاض ملحوظ في درجة الدقة في التطبيق.
  • التخزين المؤقت: تتضمّن عناصر Cloud Storage تلقائيًا عناوين تطلب من المتصفّحات عدم تخزين الصور مؤقتًا، ما يعني أنّ متصفّح المستخدم سينزّل الصورة نفسها مرارًا وتكرارًا. لحسن الحظ، يمكنك تغيير هذه العناوين للسماح بتخزين البيانات المؤقت. تتيح لك كل من حزمة تطوير البرامج (SDK) لـ Cloud Storage من جهة العميل وحزمة تطوير البرامج (SDK) للمشرف في Firebase ضبط هذه الرؤوس.

لضغط الصور، عليك إما الحد من جودة التحميل أو استخدام عملية من جهة الخادم لتغيير حجم الصور. لنطّلِع على الإيجابيات والسلبيات:

  • من جهة العميل: بالنسبة إلى العملية التي تتم من جهة العميل، يمكنك ببساطة الحد من حجم الملفات للصور المحمَّلة. وهذا يعني أنّك لست بحاجة إلى كتابة أي منطق خادم جديد أو صيانته. ومع ذلك، يعني ذلك أيضًا أنّ البائعين بحاجة إلى معرفة كيفية تغيير حجم صورهم، ما يشكّل عائقًا مزعجًا وغير واضح لإنشاء بطاقة بيانات جديدة.
  • من جهة الخادم: إذا كنت تستخدم وظائف السحابة الإلكترونية لبرنامج Firebase، يمكنك تفعيل دالة تعمل على تغيير حجم الصورة تلقائيًا عند تحميلها. وهذا يعني أنّه يمكن للبائعين تحميل أي حجم للصورة يناسبهم (بدون أي عمل إضافي)، ويمكن لوظيفة الخلفية تغيير حجم الصورة بسلاسة. يتوفّر أيضًا نموذج لهذه الدالة.

يبدو أنّ استخدام وظائف الخادم هو الحلّ الأمثل. ولكن لا تزال هذه الفكرة تتطلّب استنساخ العيّنة واتّباع تعليمات الإعداد، ثم نشر الدالة باستخدام واجهة برمجة التطبيقات Firebase CLI. يبدو أنّ تغيير حجم الصور هو أحد حالات الاستخدام الشائعة. هل هناك حل أسهل؟

حلّ أسهل

يسرّنا إعلامك بأنّه يمكنك حلّ هذه المشكلة. هناك حلّ أسهل: "إضافات Firebase". لنطّلِع على قائمة الإضافات المتاحة على موقع Firebase الإلكتروني.

e6bc3874cf23f34f.png

انظر إلى ذلك. هناك إضافة باسم "تغيير حجم الصور". يبدو هذا الأمر مفيدًا.

لنستخدم هذه الإضافة في تطبيقك.

تثبيت إضافة

  1. انقر على عرض التفاصيل للاطّلاع على مزيد من المعلومات عن هذه الإضافة. ضمن ما يمكنك ضبطه، تتيح لك الإضافة ضبط الأبعاد التي تريد تغيير حجمها، ويمكنك أيضًا ضبط عنوان ذاكرة التخزين المؤقت. ممتاز.
  2. انقر على الزر التثبيت في وحدة التحكّم في صفحة تفاصيل الإضافة. سيتم نقلك إلى صفحة "وحدة تحكّم Firebase" التي تسرد جميع مشاريعك.
  3. اختَر مشروع FriendlyMarket الذي أنشأته لهذا الدليل التعليمي.
  4. اتّبِع التعليمات الظاهرة على الشاشة إلى أن تصل إلى خطوة ضبط الإضافة. ستعرض التعليمات ملخّصًا أساسيًا عن الإضافة، بالإضافة إلى أيّ موارد ستنشئها وأدوار الوصول التي تتطلّبها.
  5. في الحقل **Cache-Control** عنوان الصور التي تم تغيير حجمها، أدخِل ما يلي:

public, max-age=31536000

  1. اترك المَعلمات الأخرى على قيمها التلقائية.
  2. انقر على تثبيت الإضافة.

أثناء انتظار اكتمال عملية التثبيت...

التثبيت باستخدام واجهة سطر أوامر Firebase

إذا كنت تفضّل استخدام أدوات سطر الأوامر، يمكنك أيضًا تثبيت الإضافات وإدارتها باستخدام واجهة سطر الأوامر في Firebase. ما عليك سوى استخدام الأمر firebase ext المتوفّر في أحدث إصدار من واجهة برمجة التطبيقات. يمكنك الاطّلاع على مزيد من المعلومات هنا.

(اختياري) مزيد من المعلومات عن عناوين Cache-Control

تعني قيمة العنوان Cache-Control‏ public, max-age=31536000 أنّه سيتم تخزين الصورة مؤقتًا لمدة تصل إلى عام واحد. لمزيد من المعلومات عن رأس Cache-Control، يمكنك الاطّلاع على هذه المستندات.

تعديل رمز العميل

تُسجِّل الإضافة التي ثبّتها صورة تم تغيير حجمها في الحزمة نفسها التي تحتوي على الصورة الأصلية. تتم إضافة الأبعاد التي تم ضبطها إلى اسم ملف الصورة التي تم تغيير حجمها. وبالتالي، إذا كان مسار الملف الأصلي يبدو مثل friendlymarket/user1234-car.png، سيظهر مسار ملف الصورة التي تم تغيير حجمها مثل friendlymarket/user1234-car_200x200.png.

لنعدِّل التطبيق كي يُجلب الصور التي تم تغيير حجمها بدلاً من الصور بالحجم الكامل.

  1. في StackBlitz، افتح ملف src/firebase-refs.js.
  2. استبدِل الدالة getImageRef الحالية بالرمز البرمجي التالي لإنشاء مرجع للصورة التي تم تغيير حجمها:
export function getImageRef(storage, imagePath) {
  const xDimension = 200;
  const yDimension = 200;

  // find the '.' in 'file.jpg', 'file.png', etc
  const fileExtensionIndex = imagePath.lastIndexOf('.');

  const pathNameWithoutExtension = imagePath.substring(0, fileExtensionIndex);
  const dimensions = `${xDimension}x${yDimension}`;
  const fileExtension = imagePath.substring(fileExtensionIndex);

  return {
    resized: storage().ref(
      `${pathNameWithoutExtension}_${dimensions}${fileExtension}`
    ),
    original: storage().ref(imagePath)
  };
}

التجربة

بما أنّ هذه الإضافة تتتبّع عمليات تحميل الصور الجديدة، لن يتم تغيير حجم صورتك الحالية.

أنشئ مشاركة جديدة للاطّلاع على كيفية عمل الإضافة:

  1. انقر على سوق سهل الاستخدام في الشريط العلوي من تطبيقك للانتقال إلى الشاشة الرئيسية.
  2. انقر على الزر بيع سلعة في أسفل يسار التطبيق لإنشاء بطاقة بيانات.
  3. بالنسبة إلى العنوان، أدخِل Coffee.
  4. بالنسبة إلى السعر المطلوب، أدخِل 1.
  5. بالنسبة إلى وصف السلعة، أدخِل ما يلي: Selling one cafe latte. It has foam art in the shape of a bear.
  6. نزِّل هذه الصورة لفنجان قهوة على جهاز الكمبيوتر، وحمِّلها باستخدام الزر صورة المنتج.
  7. بعد ملء جميع الحقول وتحميل صورة، انقر على نشر. ستظهر بطاقة بيانات القهوة أسفل آلة الماريمبا.
  8. في لوحة بيانات الدوالّ في وحدة تحكّم Firebase، انقر على علامة التبويب السجلّات. من المفترض أن تظهر لك سجلات من الدالة تُظهر أنّها تم تنفيذها.

486d1226be84bb44.png

  1. انتقِل إلى لوحة بيانات مساحة التخزين للاطّلاع على كلّ من صورة القهوة الأصلية ونسخة تم تغيير حجمها في مسار friendlymarket.
  2. في لوحة معاينة StackBlitz، أعِد تحميل الشاشة الرئيسية لتطبيقك عدة مرات. من المفترض أن تلاحظ تحميل صورة القهوة بشكل أسرع بكثير من صورة آلة الوتريات.

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

5- إعادة ضبط إضافة

المشكلة

يحفظ تطبيقك تلقائيًا مسودات نُسخ من بطاقة بيانات البائع. يحب المستخدمون هذه الميزة، ولكن إحصاءاتك تبعث على القلق بعض الشيء. تشير تقاريرك إلى أنّه يتم نشر حوالي% 10 فقط من المسودات، وأنّ% 90 المتبقية تشغل مساحة في قاعدة بياناتك.

الحلّ

بعد إجراء بعض العمليات الحسابية البسيطة، أدركت أنّك تحتاج فقط إلى حفظ حوالي خمس مسودات في أي وقت.

هل تتذكر كتالوج إضافات Firebase؟ من المحتمل أن يكون هناك حلّ تم إنشاؤه مسبقًا لهذا الموقف. لنثبِّت إضافة Limit Child Nodes (وضع حدّ لعدد العقد الفرعية) للحفاظ تلقائيًا على عدد المسودات المحفوظة عند خمسة مسودات أو أقل. ستحذف الإضافة المسودة الأقدم عند إضافة مسودة جديدة.

  1. انقر على الزر تثبيت في صفحة تفاصيل الإضافة.
  2. اختَر مشروع Firebase الذي تستخدمه لتطبيقك على الويب في السوق.
  3. اتّبِع التعليمات الظاهرة على الشاشة إلى أن تصل إلى خطوة ضبط الإضافة.
  4. بالنسبة إلى مسار قاعدة بيانات "الوقت الفعلي"، أدخِل drafts. هذا هو المسار في قاعدة البيانات حيث يتم حفظ المسودات.
  5. بالنسبة إلى الحد الأقصى لعدد العقد التي يجب الاحتفاظ بها، أدخِل 5. وهذا يعني أنّه سيتم حفظ خمس مسودات لكل بطاقة بيانات سلعة، وفي حال إضافة مسودة أخرى، سيتم تلقائيًا حذف المسودة الأقدم.
  6. انقر على تثبيت الإضافة.

أثناء انتظار اكتمال عملية التثبيت...

مراقبة الإضافات

عند تثبيت إضافة، تنشئ العملية عدة دوال. يمكنك التحقّق من عدد مرات تنفيذ هذه الدوال أو عرض السجلات ومعدّلات الأخطاء. للحصول على معلومات تفصيلية عن كيفية مراقبة الإضافة، يُرجى الاطّلاع على مقالة إدارة الإضافات المثبَّتة. اتّبِع التعليمات الواردة في المستندات لعرض الدوالّ التي أنشأتها إضافة "تغيير حجم الصور" في الخطوة السابقة.

إلغاء تثبيت الإضافات

لإزالة إضافة من مشروعك، قد تميل إلى حذف الدوالّ الفردية التي تنشئها الإضافة، ولكن يمكن أن يؤدي ذلك إلى سلوك غير متوقّع، لأنّ الإضافة الواحدة قد تنشئ دوالّ متعددة. اطّلِع على كيفية إلغاء تثبيت إضافة في المستندات.

يؤدي إلغاء التثبيت إلى حذف جميع الموارد (مثل وظائف الإضافة) وحساب الخدمة الذي تم إنشاؤه لتلك النسخة من الإضافة. ومع ذلك، ستبقى أي عناصر أنشأتها الإضافة (مثل الصور التي تم تغيير حجمها) في مشروعك بعد إلغاء تثبيت الإضافة.

تثبيت نُسخ متعددة من إضافة في مشروع واحد

لا تقتصر على تثبيت مثيل واحد من إضافة معيّنة في مشروع. إذا أردت حصر الإدخالات في مسار آخر، يمكنك تثبيت نسخة أخرى من هذه الإضافة. ومع ذلك، لأغراض هذا الدرس التطبيقي حول الترميز، ستثبّت الإضافة مرة واحدة فقط.

أمثلة على استخدام هذه الميزة

  1. تأكَّد من تسجيل الدخول باستخدام الحساب الذي استخدمته لنشر المحتوى.
  2. أنشئ بعض المسودات:
  3. انقر على الزر بيع سلعة في أسفل يسار التطبيق.
  4. عدِّل العنوان ليصبح "مسودة 1".
  5. انتقِل للأسفل إلى قسم المسودات واطّلِع على عدد المسودات. يجب أن يكون هناك اثنان على الأقل.
  6. انقر على الزر FRIENDLY MARKET (سوق صديقة) في أعلى شريط التطبيق. بهذه الطريقة، ستحصل على مسودة محفوظة ولكن لن تحتاج إلى نشرها.
  7. كرِّر الخطوات نفسها مع "المسودة 2" و"المسودة 3" وهكذا إلى "المسودة 6".
  8. عند إنشاء "المسوّدة 6"، ستلاحظ أنّ "المسوّدة 1" تختفي من قسم المسوّدات.
  9. كما فعلت مع إضافة "تغيير حجم الصور"، يمكنك الاطّلاع على سجلات الدوالّ لمعرفة الدوالّ التي تم تفعيلها.

عفوًا، الحد الأقصى المسموح به للمسودات التي يمكن الاحتفاظ بها صغير جدًا

يتواصل معك فريق دعم العملاء لإعلامك بأنّ بعض البائعين الأكثر إنتاجية يشتكون من حذف مسوداتهم قبل أن يتمكّنوا من نشرها. تُراجع حساباتك مع زميلك وتدرك أنّ حساباتك كانت خاطئة بمقدار 10,000 مرة.

كيف يمكنك حلّ هذه المشكلة؟ لنعيد ضبط الإضافة المثبَّتة.

  1. في اللوحة اليمنى من وحدة تحكّم Firebase، انقر على الإضافات.
  2. في بطاقة الإضافة المثبّتة، انقر على إدارة.
  3. في أعلى يسار الصفحة، انقر على إعادة ضبط الإضافة.
  4. غيِّر الحد الأقصى لعدد العقد التي يجب الاحتفاظ بها إلى 50000.
  5. انقر على حفظ.

هذا كل ما عليك فعله. خلال الوقت الذي يستغرقه تحديث الإضافة، يمكنك التحدث إلى فريق الدعم وإبلاغه بأنّه يتم حاليًا نشر حلّ.

6- حذف بيانات المستخدمين تلقائيًا

المشكلة

تواصل معك فريق دعم العملاء مرة أخرى. لا يزال البائعون الذين حذفوا حساباتهم يتلقّون رسائل إلكترونية من مستخدمين آخرين، وهم غاضبون. توقّع هؤلاء البائعون أن يتم حذف عناوين بريدهم الإلكتروني من أنظمتك عند حذف حساباتهم.

في الوقت الحالي، يحذف فريق الدعم بيانات كل مستخدم يطلب ذلك يدويًا، ولكن يجب أن تكون هناك طريقة أفضل. بعد التفكير في الأمر، تقرر كتابة وظيفة مجمّعة يتم تشغيلها بشكل دوري وتزيل عناوين البريد الإلكتروني من الحسابات المحذوفة. ولكن يبدو أنّ حذف بيانات المستخدمين مشكلة شائعة جدًا. قد تساعدك إضافات Firebase أيضًا في حلّ هذه المشكلة.

الحلّ

عليك ضبط إضافة حذف بيانات المستخدم لحذف عقدة users/uid تلقائيًا في قاعدة البيانات عندما يحذف مستخدم حسابه.

  1. انقر على الزر تثبيت في صفحة تفاصيل الإضافة.
  2. اختَر مشروع Firebase الذي تستخدمه لتطبيقك على الويب في السوق.
  3. اتّبِع التعليمات الظاهرة على الشاشة إلى أن تصل إلى خطوة ضبط الإضافة.
  4. بالنسبة إلى مسارات قاعدة بيانات "الوقت الفعلي"، أدخِل sellers/{UID}. الجزء sellers هو العقدة التي تحتوي عناصرها الفرعية على عناوين البريد الإلكتروني للمستخدمين، و{UID} هو عنصر نائب. باستخدام هذا الإعداد، ستعرف الإضافة أنّه عندما يحذف المستخدم الذي يحمل رقم التعريف 1234 حسابه، يجب أن تحذف الإضافة sellers/1234 من قاعدة البيانات.
  5. انقر على تثبيت الإضافة.

أثناء انتظار اكتمال عملية التثبيت...

لنطّلِع على ميزات التخصيص

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

ومع ذلك، لا يمكن للإضافات حلّ كل المشاكل، وتعدّ مشكلة حذف بيانات المستخدمين مثالاً جيدًا على ذلك. على الرغم من أنّ إضافة "حذف بيانات المستخدم" تعالج الشكوى الحالية بشأن استمرار عرض الرسائل الإلكترونية بعد أن يحذف المستخدم حسابه، لن تحذف الإضافة كل البيانات. على سبيل المثال، ستظل بطاقة بيانات المنتج متاحة، وستبقى أي صور في Cloud Storage أيضًا. تسمح لنا إضافة "حذف بيانات المستخدم" بضبط مسار في Cloud Storage لحذفه، ولكن بما أنّه يمكن للمستخدمين تحميل العديد من الملفات المختلفة بأسماء مختلفة، لن تتمكّن من ضبط هذه الإضافة لحذف هذه العناصر تلقائيًا. في مثل هذه الحالات، قد تكون وظائف السحابة الإلكترونية لبرنامج Firebase أكثر ملاءمةً لتتمكّن من كتابة رمز برمجي خاص بنموذج بيانات تطبيقك.

الإضافات والفوترة

لا يُفرض أي رسوم على استخدام إضافات Firebase نفسها (لا يتم تحصيل رسوم منك إلا مقابل الموارد الأساسية التي تستخدمها)، ولكن قد تتطلّب بعض الموارد الأساسية التي تحتاجها إحدى الإضافات الفوترة. تم تصميم هذا الدليل التعليمي للترميز لإكماله بدون حساب فوترة. ومع ذلك، يتيح إعداد خطة Flame أو Blaze الكثير من إضافات Firebase المثيرة للاهتمام.

على سبيل المثال، يمكنك تقصير عناوين URL وتشغيل الرسائل الإلكترونية وتصدير المجموعات إلى BigQuery وغير ذلك. يمكنك الاطّلاع على القائمة الكاملة للإضافات هنا.

إذا أردت الحصول على إضافة غير متاحة حاليًا، يُرجى إعلامنا بذلك. قدِّم طلب ميزة إلى فريق دعم Firebase لاقتراح إضافة جديدة.

أمثلة على استخدام هذه الميزة

بعد اكتمال تثبيت الإضافة، احذف مستخدمًا واطّلِع على ما يحدث:

  1. في وحدة تحكُّم Firebase، انتقِل إلى لوحة بيانات قاعدة البيانات في الوقت الفعلي.
  2. وسِّع عقدة sellers.
  3. يتمّ ربط معلومات كلّ بائع بمعرّف مستخدمه الفريد. اختَر رقم تعريف مستخدم.
  4. في وحدة تحكّم Firebase، انتقِل إلى لوحة بيانات المصادقة، وابحث عن رقم تعريف المستخدم هذا.
  5. وسِّع القائمة على يسار المعرّف الفريد للجهاز، ثم اختَر حذف الحساب.

2e03923c9d7f1f29.png

  1. ارجع إلى لوحة بيانات قاعدة بيانات الوقت الفعلي. سيتم حذف معلومات البائع.

7- تهانينا!

على الرغم من أنّك لم تكتب الكثير من الرموز البرمجية في هذا الدليل التعليمي، أضفت ميزات مهمة إلى تطبيقك في السوق.

لقد تعلمت كيفية اكتشاف الإضافات وضبطها وتثبيتها وإعادة ضبطها. بالإضافة إلى ذلك، تعرّفت على كيفية مراقبة الإضافات المثبّتة وكيفية إلغاء تثبيتها إذا لزم الأمر.

الخطوة التالية

إليك بعض الإضافات الأخرى:

هل تحتاج إلى المزيد من الرموز المخصّصة من جهة الخادم؟

مستندات أخرى مفيدة

إدارة الإضافات:

التعرّف على التفاصيل الدقيقة عن الإضافات: