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

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

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

تحاكي "حزمة أدوات المحاكاة المحلية في Firebase" منتجات مشروع واحد على Firebase.

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

تتيح حزمة المحاكي المحلي إمكانية محاكاة مشاريع Firebase الحقيقية ومشاريع تجريبية.

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

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

تتضمّن المشاريع الحقيقية موارد مباشرة، مثل مثيلات قواعد البيانات أو حِزم مساحة التخزين أو الدوال أو أي مورد آخر أعددته لمشروع Firebase هذا.

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

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

تجريبي

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

تتضمّن أرقام تعريف المشاريع الخاصة بالمشاريع التجريبية البادئة demo-.

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

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

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

استخدِم تطبيقك للتواصل مع المحاكيات

أنظمة Android الأساسية وApple وحزم تطوير البرامج (SDK) على الويب

يمكنك إعداد الإعدادات داخل التطبيق أو صفوف الاختبار للتفاعل مع قاعدة بيانات الوقت الفعلي على النحو التالي.

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 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")

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 التي شغّلتها أحداث قاعدة البيانات في الوقت الفعلي باستخدام المحاكي. عندما يتم تشغيل كل من مُحاكي قاعدة البيانات في الوقت الفعلي وCloud Functions، فإنهما يعملان معًا تلقائيًا.

حزم SDK للمشرف

تتصل حِزم SDK لمشرفي Firebase تلقائيًا بمحاكي قاعدة البيانات في الوقت الفعلي عند ضبط متغيّر البيئة FIREBASE_DATABASE_EMULATOR_HOST:

export FIREBASE_DATABASE_EMULATOR_HOST="127.0.0.1:9000"

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

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

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

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

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

Kotlin+KTX
// 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 أيضًا. لمزيد من المعلومات، يُرجى الاطّلاع على مرجع أوامر المحاكي.

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

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

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

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

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

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

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

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

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