Check out what’s new from Firebase at Google I/O 2022. Learn more

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

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

בחר פרויקט Firebase

Firebase Local Emulator Suite מחקה מוצרים עבור פרויקט Firebase יחיד.

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

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

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

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

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

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

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

הַדגָמָה

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

מזהי פרויקטים עבור פרויקטי הדגמה כוללים את demo- הדגמה.

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

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

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

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

פלטפורמות אנדרואיד, אפל וערכות פיתוח אינטרנט

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

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

Web version 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);
} 

Web version 8

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

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

ערכות SDK של מנהל מערכת

ערכות ה-SDK של Firebase Admin מתחברים אוטומטית לאמולטור Realtime Database כאשר משתנה הסביבה FIREBASE_DATABASE_EMULATOR_HOST מוגדר:

export FIREBASE_DATABASE_EMULATOR_HOST="localhost:9000"

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

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

Node.js Admin 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);
מָהִיר
// With a DatabaseReference, write nil to clear the database.
    Database.database().reference().setValue(nil);

Web version 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);

Web version 8

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

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

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

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

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

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.

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

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

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

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

מה הלאה?