Catch up on highlights from Firebase at Google I/O 2023. Learn more

قم بتوصيل تطبيقك وابدأ في إنشاء النماذج الأولية

قاعدة بيانات

قبل الانتقال إلى Firebase Local Emulator Suite ، تأكد من إنشاء مشروع Firebase ، وإعداد بيئة التطوير الخاصة بك ، واختيار وتثبيت Firebase SDKs لمنصتك وفقًا لموضوعات بدء استخدام Firebase لنظامك الأساسي: Apple ، Android أو الويب .

النموذج والاختبار

يحتوي Local Emulator Suite على العديد من برامج محاكاة المنتجات ، كما هو موضح في مقدمة إلى Firebase Local Emulator Suite . يمكنك إنشاء نموذج أولي واختباره باستخدام برامج محاكاة فردية بالإضافة إلى مجموعات من المحاكيات ، كما تراه مناسبًا ، بما يتوافق مع منتجات Firebase التي تستخدمها في الإنتاج.

التفاعل بين قاعدة بيانات Firebase ومحاكيات الوظائف
محاكيات قواعد البيانات والوظائف السحابية كجزء من Local Emulator Suite الكاملة .

بالنسبة لهذا الموضوع ، لتقديم سير عمل Local Emulator Suite ، دعنا نفترض أنك تعمل على تطبيق يستخدم مجموعة نموذجية من المنتجات: قاعدة بيانات Firebase ووظائف السحابة التي يتم تشغيلها بواسطة العمليات على قاعدة البيانات هذه.

بعد أن تقوم بتهيئة مشروع Firebase محليًا ، ستشتمل دورة التطوير باستخدام Local Emulator Suite عادةً على ثلاث خطوات:

  1. يتميز النموذج الأولي بشكل تفاعلي مع المحاكيات وواجهة مستخدم Emulator Suite.

  2. إذا كنت تستخدم محاكي قاعدة بيانات أو محاكي Cloud Functions ، فقم بتنفيذ خطوة لمرة واحدة لتوصيل تطبيقك بالمحاكيات.

  3. قم بأتمتة اختباراتك باستخدام المحاكيات والبرامج النصية المخصصة.

تهيئة مشروع Firebase محليًا

تأكد من تثبيت CLI أو التحديث إلى أحدث إصدار له .

curl -sL firebase.tools | bash

إذا لم تكن قد قمت بذلك بالفعل ، فقم بتهيئة دليل العمل الحالي كمشروع Firebase ، باتباع المطالبات التي تظهر على الشاشة لتحديد أنك تستخدم وظائف السحابة وإما Cloud Firestore أو Realtime Database :

firebase init

سيحتوي دليل مشروعك الآن على ملفات تكوين Firebase ، وملف تعريف قواعد أمان Firebase لقاعدة البيانات ، ودليل functions يحتوي على رمز وظائف السحابة ، وملفات دعم أخرى.

النموذج الأولي بشكل تفاعلي

تم تصميم Local Emulator Suite للسماح لك بوضع نماذج أولية لميزات جديدة بسرعة ، وتعد واجهة المستخدم المدمجة في Suite واحدة من أكثر أدوات النماذج الأولية فائدة. إنه يشبه إلى حد ما تشغيل وحدة تحكم Firebase محليًا.

باستخدام Emulator Suite UI ، يمكنك تكرار تصميم قاعدة بيانات ، وتجربة تدفقات بيانات مختلفة تتضمن وظائف سحابية ، وتقييم تغييرات قواعد الأمان ، والتحقق من السجلات لتأكيد أداء خدماتك الخلفية ، والمزيد. بعد ذلك ، إذا كنت تريد البدء من جديد ، فما عليك سوى مسح قاعدة البيانات الخاصة بك والبدء من جديد بفكرة تصميم جديدة.

كل ذلك متاح عند بدء Local Emulator Suite بـ:

firebase emulators:start

لإنشاء نموذج أولي لتطبيقنا الافتراضي ، فلنقم بإعداد واختبار وظيفة سحابية أساسية لتعديل إدخالات النص في قاعدة بيانات ، وإنشاء قاعدة البيانات هذه ونشرها في واجهة مستخدم Emulator Suite لتشغيلها.

  1. قم بإنشاء وظيفة سحابية يتم تشغيلها بواسطة عمليات الكتابة في قاعدة البيانات عن طريق تحرير ملف functions/index.js في دليل المشروع الخاص بك. استبدل محتويات الملف الموجود بالمقتطف التالي. تستمع هذه الوظيفة إلى التغييرات التي تم إجراؤها على المستندات في مجموعة messages ، وتحول محتويات الحقل original للمستند إلى أحرف كبيرة ، وتخزن النتيجة في الحقل uppercase لهذا المستند.
  2.   const functions = require('firebase-functions');
    
      exports.makeUppercase = functions.firestore.document('/messages/{documentId}')
          .onCreate((snap, context) => {
            const original = snap.data().original;
            console.log('Uppercasing', context.params.documentId, original);
            const uppercase = original.toUpperCase();
            return snap.ref.set({uppercase}, {merge: true});
          });
      
  3. قم بتشغيل Local Emulator Suite باستخدام firebase emulators:start . تبدأ وظائف السحابة ومحاكيات قواعد البيانات ، ويتم تكوينها تلقائيًا للعمل البيني.
  4. اعرض واجهة المستخدم في المستعرض الخاص بك على http://localhost:4000 . المنفذ 4000 هو الإعداد الافتراضي لواجهة المستخدم ، ولكن تحقق من إخراج الرسائل الطرفية بواسطة Firebase CLI. لاحظ حالة المحاكيات المتاحة. في حالتنا ، سيتم تشغيل وظائف السحابة ومحاكيات Cloud Firestore.
    صورتي
  5. في واجهة المستخدم ، في Firestore> علامة التبويب البيانات ، انقر فوق بدء التجميع واتبع المطالبات لإنشاء مستند جديد في مجموعة messages ، باستخدام اسم الحقل original test القيمة. يؤدي هذا إلى تشغيل وظيفة السحابة لدينا. لاحظ ظهور حقل uppercase جديد قريبًا ، ممتلئًا بالسلسلة "TEST".
    صورتيصورتي
  6. في علامة التبويب Firestore> الطلبات ، افحص الطلبات المقدمة إلى قاعدة البيانات التي تمت مضاهاتها ، بما في ذلك جميع تقييمات قواعد أمان Firebase التي يتم إجراؤها كجزء من تلبية هذه الطلبات.
  7. تحقق من علامة التبويب السجلات للتأكد من أن وظيفتك لم تتعرض لأخطاء لأنها قامت بتحديث قاعدة البيانات.

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

قم بتوصيل تطبيقك بالمحاكيات

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

تذكر أن Local Emulator Suite هي أداة تطوير محلية. لن تؤدي عمليات الكتابة إلى قواعد بيانات الإنتاج الخاصة بك إلى تشغيل الوظائف التي تقوم بعمل نماذج أولية لها محليًا.

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

Kotlin+KTX
// 10.0.2.2 is the special IP address to connect to the 'localhost' of
// the host computer from an Android emulator.
val firestore = Firebase.firestore
firestore.useEmulator("10.0.2.2", 8080)

firestore.firestoreSettings = firestoreSettings {
    isPersistenceEnabled = false
}
Java
// 10.0.2.2 is the special IP address to connect to the 'localhost' of
// the host computer from an Android emulator.
FirebaseFirestore firestore = FirebaseFirestore.getInstance();
firestore.useEmulator("10.0.2.2", 8080);

FirebaseFirestoreSettings settings = new FirebaseFirestoreSettings.Builder()
        .setPersistenceEnabled(false)
        .build();
firestore.setFirestoreSettings(settings);
سويفت
let settings = Firestore.firestore().settings
settings.host = "localhost:8080"
settings.isPersistenceEnabled = false 
settings.isSSLEnabled = false
Firestore.firestore().settings = settings

Web version 9

import { getFirestore, connectFirestoreEmulator } from "firebase/firestore";

// firebaseApps previously initialized using initializeApp()
const db = getFirestore();
connectFirestoreEmulator(db, 'localhost', 8080);

Web version 8

// Firebase previously initialized using firebase.initializeApp().
var db = firebase.firestore();
if (location.hostname === "localhost") {
  db.useEmulator("localhost", 8080);
}

أتمتة اختباراتك باستخدام البرامج النصية المخصصة

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

firebase emulators:exec "./testdir/test.sh"

استكشف المحاكيات الفردية بمزيد من العمق

الآن بعد أن رأيت كيف يبدو سير العمل الأساسي من جانب العميل ، يمكنك متابعة التفاصيل حول المحاكيات الفردية في Suite ، بما في ذلك كيفية استخدامها لتطوير التطبيقات من جانب الخادم:

ماذا بعد؟

تأكد من قراءة الموضوعات المتعلقة بمحاكيات محددة مرتبطة أعلاه. ثم: