חבר את האפליקציה שלך לאמולטור בסיסי הנתונים בזמן אמת

לפני חיבור האפליקציות שלך אמולטור מסד זמן האמת, לוודא שאתה מבין את עבודת Suite Emulator הכוללת Firebase המקומי , ושאתם להתקין ולהגדיר חבילת Emulator המקומית ולסקור שלה פקוד CLI .

בחר פרויקט Firebase

חבילת האמולטור המקומית של Firebase מחקה מוצרים לפרויקט Firebase יחיד.

כדי לבחור את הפרויקט להשתמש, לפני שתתחיל אמולטורים, ב CLI בטווח firebase use בספרייה עובד שלך. לחלופין, אתה יכול להעביר את --project דגל לכל פקודה אמולטור.

המקומי Emulator Suite תומך אמולציה של פרויקטים אמיתיים Firebase ופרויקטי ההדגמה.

סוג הפרויקט מאפיינים השתמש עם אמולטורים
אמיתי

פרויקט Firebase אמיתי הוא פרויקט שיצרת והגדרת (סביר להניח דרך מסוף Firebase).

לפרויקטים אמיתיים יש משאבים חיים, כמו מופעי מסדי נתונים, דליים לאחסון, פונקציות או כל משאב אחר שהגדרת עבור אותו פרויקט Firebase.

בעת עבודה עם פרויקטים אמיתיים של Firebase, תוכל להריץ אמולטורים לכל המוצרים הנתמכים או כולם.

עבור כול מוצרים אינכם מחקתם, אפליקציות הקוד שלך תהיינה אינטראקציה עם המשאב החי (למשל מסד נתונים, דלי אחסון, פונקציה, וכו ').

הַדגָמָה

פרויקט הדגמת Firebase אין תצורת Firebase אמיתית ואין משאבים חיים. בדרך כלל ניגשים לפרויקטים אלה באמצעות codelabs או הדרכות אחרות.

פרויקט תעודות זהות לפרויקטי הדגמה יש demo- הקידומת.

כאשר עובדים עם הדגמת פרויקטים Firebase, האפליקציות שלך ולתקשר קוד עם אמולטורים בלבד. אם האפליקציה שלך מנסה ליצור אינטראקציה עם משאב שעבורו לא פועל אמולטור, הקוד הזה ייכשל.

אנו ממליצים לך להשתמש בפרויקטים הדגמה בכל מקום אפשרי. ההטבות כוללות:

  • התקנה קלה יותר מכיוון שאתה יכול להריץ את האמולטורים מבלי ליצור פרויקט Firebase
  • בטיחות חזקה יותר, מכיוון שאם הקוד שלך גורם בטעות למשאבים (ייצור) שאינם חיקויים, אין סיכוי לשינוי נתונים, שימוש וחיוב
  • תמיכה לא מקוונת טובה יותר, מכיוון שאין צורך לגשת לאינטרנט כדי להוריד את תצורת ה- SDK שלך.

השתמש באפליקציה שלך כדי לדבר עם אמולטורים

Android, iOS ו- Web SDKs

הגדר את תצורת האפליקציה שלך או את שיעורי הבדיקה כדי ליצור אינטראקציה עם מסד הנתונים בזמן אמת כדלקמן.

דְמוּי אָדָם
        // 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);
iOS - סוויפט
    // In almost all cases the ns (namespace) is your project ID.
let db = Database.database(url:"http://localhost:9000?ns=YOUR_DATABASE_NAMESPACE")

גרסת אינטרנט 9

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

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

גרסת אינטרנט 8

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

אין צורך בהתקנה נוספת נדרשת כדי לבדוק פונקציות ענן מופעלות על ידי אירועי מסד זמן אמת באמצעות אמולטור. כאשר אמולטורים של מסדי נתונים בזמן אמת ותכונות ענן פועלים שניהם פועלים באופן אוטומטי יחד.

מנהלי SDK

ערכת פיתוח התוכנה Admin Firebase אוטומטית להתחבר אמולטור מסד זמן אמת כאשר FIREBASE_DATABASE_EMULATOR_HOST משתנה הסביבה מוגדר:

export FIREBASE_DATABASE_EMULATOR_HOST="localhost:9000"

אם הקוד שלך פועל בתוך פונקציות ענן אמולטור מזהה הפרויקט שלך ותצורה אחרת יוגדרו באופן אוטומטי כאשר קוראים initalizeApp .

בעת התחברות לאמולטור מסד הנתונים בזמן אמת מכל סביבה אחרת, יהיה עליך לציין מזהה פרוייקט. אתה יכול לעבור מזהה פרויקט initializeApp ישירות או להגדיר את GCLOUD_PROJECT משתנה הסביבה. שים לב שאינך צריך להשתמש במזהה הפרויקט האמיתי שלך ב- Firebase, אמולטור מסד הנתונים בזמן אמת יקבל כל מזהה פרוייקט:

Node.js מנהל SDK
admin.initializeApp({ projectId: "your-project-id" });
משתנה הסביבה
export GCLOUD_PROJECT="your-project-id"

נקה את מסד הנתונים שלך בין הבדיקות

כדי לשטוף את מסד הנתונים בזמן אמת בין פעילויות, תוכל לנקות את הפניה למסד הנתונים. אתה יכול להשתמש בגישה זו כחלופה פשוט לסגור את תהליך האמולטור.

דְמוּי אָדָם
// With a DatabaseReference, write null to clear the database.
database.getReference().setValue(null);
iOS - סוויפט
// With a DatabaseReference, write nil to clear the database.
    Database.database().reference().setValue(nil);

גרסת אינטרנט 9

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

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

גרסת אינטרנט 8

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

מטבע הדברים, הקוד שלך אמור להמתין לאישור שהסומק הסתיים או נכשל באמצעות תכונות הטיפול באירועים אסינכרוני של הפלטפורמה שלך.

לאחר יישום שלב כזה, תוכל לבצע רצף של הבדיקות ולהפעיל את הפונקציות שלך בביטחון כי נתונים ישנים יימחקו בין ההרצות ואתה משתמש בתצורת בדיקה בסיסית חדשה.

ייבוא ​​וייצוא של נתונים

מסדי הנתונים ואמולטורי אחסון הענן מאפשרים לך לייצא נתונים ממופע אמולטור פועל. הגדר מערך נתונים בסיסי לשימוש בבדיקות היחידה שלך או בתהליכי עבודה של אינטגרציה רציפה, ולאחר מכן ייצא אותם כדי לשתף אותו עם הצוות.

firebase emulators:export ./dir

בבדיקות, בעת הפעלת אמולטור, ייבא את נתוני הבסיס.

firebase emulators:start --import=./dir

אתה יכול להורות אמולטור נתוני היצוא על כיבוי, או לציין נתיב הייצוא או פשוט תוך שימוש בנתיב עבר --import הדגל.

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

אפשרויות ייבוא וייצוא נתונים אלה לעבוד עם firebase emulators:exec הפקודה גם כן. לפרטים נוספים, עיין התייחסות הפקודה אמולטור .

דמיינו את פעילות כללי האבטחה

בזמן שאתה עובד באמצעות אב טיפוס ולולאות בדיקה, אתה יכול להשתמש בכלים ויזואליזציה ודוחות המסופקים על ידי חבילת האמולטור המקומי.

דמיינו הערכות כללים

כאשר אתה מוסיף כללי אבטחה לאב -הטיפוס שלך אתה יכול לאתר אותם באגים בעזרת כלי Emulator Suite של Local.

לאחר הפעלת מערך בדיקות, תוכל לגשת לדוחות כיסוי בדיקות המראים כיצד הוערך כל אחד מהחוקים שלך. כדי לקבל את הדוחות, שאילתה על נקודת קצה חשופה על האמולטור בזמן שהוא פועל. לגרסה ידידותית לדפדפן, השתמש בכתובת האתר הבאה:

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

זה מפר את הכללים שלך לביטויים וביטויים משנה שאתה יכול להעביר באמצעות העכבר למידע נוסף, כולל מספר הוצאות להורג וערכים שהוחזרו. עבור גרסת JSON הגולמית של נתונים אלה, כלול את כתובת האתר הבאה בשאילתה:

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

מה הלאה?