חבר את האפליקציה שלך לאמולטור Cloud Firestore

לפני חיבור האפליקציות שלך אמולטור ענן Firestore, לוודא שאתה מבין את העבודה 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

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

דְמוּי אָדָם
        // 10.0.2.2 is the special IP address to connect to the 'localhost' of
        // the host computer from an Android emulator.
        FirebaseFirestore firestore = FirebaseFirestore.getInstance();
        firestore.useEmulator("10.0.2.2", 8080);

        FirebaseFirestoreSettings settings = new FirebaseFirestoreSettings.Builder()
                .setPersistenceEnabled(false)
                .build();
        firestore.setFirestoreSettings(settings);
iOS - סוויפט
let settings = Firestore.firestore().settings
settings.host = "localhost:8080"
settings.isPersistenceEnabled = false 
settings.isSSLEnabled = false
Firestore.firestore().settings = settings

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

import { getFirestore, connectFirestoreEmulator } from "firebase/firestore";

// firebaseApps previously initialized using initializeApp()
const db = getFirestore();
connectFirestoreEmulator(db, 'localhost', 8080);

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

// Firebase previously initialized using firebase.initializeApp().
var db = firebase.firestore();
if (location.hostname === "localhost") {
  db.useEmulator("localhost", 8080);
}
אינטרנט
// Initialize your Web app as described in the Get started for Web
// Firebase previously initialized using firebase.initializeApp().
var db = firebase.firestore();
if (location.hostname === "localhost") {
  db.useEmulator("localhost", 8080);
}

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

מנהלי SDK

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

export FIRESTORE_EMULATOR_HOST="localhost:8080"

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

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

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

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

ייצור Firestore אינו מספק שיטת SDK פלטפורמת לשטיפת מסד הנתונים, אך אמולטור Firestore נותן לך נקודת קצה REST במיוחד למטרה זו, שאפשר לקרוא לה משלב הגדרת מסגרת בדיקה/tearDown, משיעור בדיקה או מהקליפה (למשל , עם curl ) לפני הוא יצא לדרך מבחן. אתה יכול להשתמש בגישה זו כחלופה פשוט לסגור את תהליך האמולטור.

שיטה מתאימה, לבצע פעולת מחיקת HTTP, אספקת projectID Firebase שלך, למשל firestore-emulator-example , לנקודת הקצה הבא:

"http://localhost:8080/emulator/v1/projects/firestore-emulator-example/databases/(default)/documents"

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

ניתן לבצע פעולה זו מהקליפה:

// Shell alternative…
$ curl -v -X DELETE "http://localhost:8080/emulator/v1/projects/firestore-emulator-example/databases/(default)/documents"

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

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

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

firebase emulators:export ./dir

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

firebase emulators:start --import=./dir

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

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

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

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

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

השתמש במסך הבקשות

אמולטור Cloud Firestore מאפשר לך לדמיין בקשות לקוח בממשק המשתמש של Emulator Suite, כולל מעקב אחר הערכה לכללי האבטחה של Firebase.

פתח את הכרטיסייה Firestore> בקשות להציג את רצף הערכה מפורטת לכל בקשה.

מוניטור בקשות אמולטור Firestore שמציג הערכות של כללי אבטחה

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

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

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

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

http://localhost:8080/emulator/v1/projects/<database_name>:ruleCoverage.html

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

http://localhost:8080/emulator/v1/projects/<database_name>:ruleCoverage

כאן, גרסת ה- HTML של הדוח מדגישה הערכות שמטילות שגיאות לא מוגדרות ושוות ערך:

מגבלות

אמולטור Cloud Firestore מנסה לשכפל נאמנה את התנהגותו של שירות ההפקה בכמה מגבלות בולטות:

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

מה הלאה?