ربط تطبيقك بمحاكي قاعدة البيانات في الوقت الفعلي

قبل ربط تطبيقك بمحاكي Realtime Database، تأكَّد من فهم سير عمل Firebase Local Emulator Suite بشكل عام، وتثبيت وضبط Local Emulator Suite ومراجعة أوامر واجهة سطر الأوامر.

اختيار مشروع Firebase

تحاكي Firebase Local Emulator Suite المنتجات لمشروع واحد على Firebase.

لاختيار المشروع الذي تريد استخدامه، قبل بدء المحاكيات، نفِّذ الأمر firebase use في واجهة سطر الأوامر في دليل العمل. أو يمكنك تمرير علامة --project إلى كل أمر من أوامر المحاكي.

تتيح حزمة Local Emulator Suite محاكاة مشاريع Firebase الحقيقية والمشاريع التجريبية.

نوع المشروع الميزات الاستخدام مع المحاكيات
ريال

مشروع Firebase الحقيقي هو مشروع أنشأته وأعددته (على الأرجح من خلال وحدة تحكّم Firebase).

تحتوي المشاريع الحقيقية على موارد نشطة، مثل مثيلات قواعد البيانات أو حِزم التخزين أو الدوال أو أي موارد أخرى تم إعدادها لمشروع Firebase هذا.

عند العمل على مشاريع Firebase حقيقية، يمكنك تشغيل المحاكيات لأي من المنتجات المتوافقة أو جميعها.

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

تجريبي

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

تحتوي أرقام تعريف المشاريع التجريبية على البادئة demo-.

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

ننصحك باستخدام المشاريع التجريبية كلما أمكن ذلك. تتضمّن المزايا ما يلي:

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

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

حِزم تطوير البرامج (SDK) لنظام التشغيل Android ومنصات Apple والويب

يمكنك ضبط الإعدادات داخل التطبيق أو فئات الاختبار للتفاعل مع Realtime Database على النحو التالي.

Kotlin
// 10.0.2.2 is the special IP address to connect to the 'localhost' of
// the host computer from an Android emulator.
val database = Firebase.database
database.useEmulator("10.0.2.2", 9000)
Java
// 10.0.2.2 is the special IP address to connect to the 'localhost' of
// the host computer from an Android emulator.
FirebaseDatabase database = FirebaseDatabase.getInstance();
database.useEmulator("10.0.2.2", 9000);
Swift
    // In almost all cases the ns (namespace) is your project ID.
let db = Database.database(url:"http://127.0.0.1:9000?ns=YOUR_DATABASE_NAMESPACE")
Unity
// Connects to the RTDB Emulator running on port 9000.
// Note: You may need to append your namespace: "?ns=YOUR_PROJECT_ID"
FirebaseDatabase database = FirebaseDatabase.GetInstance("http://127.0.0.1:9000");

Web

import { getDatabase, connectDatabaseEmulator } from "firebase/database";

const db = getDatabase();
if (location.hostname === "localhost") {
  // Point to the RTDB emulator running on localhost.
  connectDatabaseEmulator(db, "127.0.0.1", 9000);
} 

Web

var db = firebase.database();
if (location.hostname === "localhost") {
  // Point to the RTDB emulator running on localhost.
  db.useEmulator("127.0.0.1", 9000);
} 

لا يلزم إجراء أي إعداد إضافي لاختبار Cloud Functions التي يتم تشغيلها من خلال أحداث قاعدة بيانات الوقت الفعلي باستخدام المحاكي. عند تشغيل محاكيَي قاعدة بيانات الوقت الفعلي وCloud Functions، يعملان معًا تلقائيًا.

‫Admin SDK ثانية

تتصل حزم تطوير البرامج (SDK) في Firebase Admin SDK تلقائيًا بمحاكي Realtime Database عند ضبط متغيّر البيئة FIREBASE_DATABASE_EMULATOR_HOST:

export FIREBASE_DATABASE_EMULATOR_HOST="127.0.0.1:9000"

إذا كان الرمز البرمجي يعمل داخل محاكي Cloud Functions، سيتم ضبط رقم تعريف المشروع والإعدادات الأخرى تلقائيًا عند استدعاء initializeApp.

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

Node.js Admin SDK
admin.initializeApp({ projectId: "your-project-id" });
متغيّر البيئة
export GCLOUD_PROJECT="your-project-id"

محو قاعدة البيانات بين الاختبارات

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

Kotlin
// With a DatabaseReference, write null to clear the database.
database.reference.setValue(null)
Java
// With a DatabaseReference, write null to clear the database.
database.getReference().setValue(null);
Swift
// With a DatabaseReference, write nil to clear the database.
    Database.database().reference().setValue(nil);

Web

import { getDatabase, ref, set } from "firebase/database";

// With a database Reference, write null to clear the database.
const db = getDatabase();
set(ref(db), null);

Web

// With a database Reference, write null to clear the database.
firebase.database().ref().set(null);

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

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

استيراد البيانات وتصديرها

تتيح لك قاعدة البيانات ومحاكيات Cloud Storage for Firebase تصدير البيانات من مثيل محاكي قيد التشغيل. حدِّد مجموعة أساسية من البيانات لاستخدامها في اختبارات الوحدات أو مهام سير عمل الدمج المتواصل، ثم صدِّرها لمشاركتها مع الفريق.

firebase emulators:export ./dir

في الاختبارات، عند بدء تشغيل المحاكي، استورِد البيانات الأساسية.

firebase emulators:start --import=./dir

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

firebase emulators:start --import=./dir --export-on-exit

تعمل خيارات استيراد البيانات وتصديرها هذه مع الأمر firebase emulators:exec أيضًا. لمزيد من المعلومات، يُرجى الرجوع إلى مرجع أوامر المحاكي.

عرض نشاط "قواعد الأمان"

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

عرض تقييمات القواعد

عند إضافة "قواعد الأمان" إلى النموذج الأوّلي، يمكنك تصحيح أخطائها باستخدام أدوات Local Emulator Suite.

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

http://localhost:9000/.inspect/coverage?ns=<database_name>

يؤدي ذلك إلى تقسيم القواعد إلى تعبيرات وتعبيرات فرعية يمكنك تمرير مؤشر الماوس فوقها للحصول على مزيد من المعلومات، بما في ذلك عدد عمليات التنفيذ والقيم التي تم عرضها. للحصول على نسخة JSON الأولية من هذه البيانات، قم بتضمين عنوان URL التالي في استعلامك:

http://localhost:9000/.inspect/coverage.json?ns=<database_name>

ما هي الخطوات التالية؟