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

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

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

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

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

تتيح Local Emulator Suite إمكانية محاكاة مشاريع Firebase الحقيقية. لإصدار تجريبي من المشاريع.

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

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

تحتوي المشروعات الحقيقية على موارد مباشرة، مثل مثيلات قاعدة البيانات والتخزين أو المجموعات أو الدوال أو أي مورد آخر أعددته لمنصة Firebase مشروعك.

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

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

تجريبي

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

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

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

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

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

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

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

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

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 كلاهما قيد التشغيل، فإنهما يعملان معًا تلقائيًا.

Admin 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. يمكنك ضبط رقم تعريف المشروع على initializeApp مباشرةً أو ضبط متغيّر البيئة GCLOUD_PROJECT.

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

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

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

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 أيضًا. لمزيد من المعلومات، راجع مرجع أوامر المحاكي.

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

أثناء عملك من خلال النماذج الأوّلية وحلقات الاختبار، يمكنك استخدام أدوات التصور والتقارير المقدَّمة من "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>

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