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

לפני חיבור האפליקציה שלך לאמולטור Cloud Storage for Firebase, ודא שאתה מבין את זרימת העבודה הכוללת של 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 שלך.

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

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

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

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 storage = Firebase.storage
storage.useEmulator("10.0.2.2", 9199)
Java
// 10.0.2.2 is the special IP address to connect to the 'localhost' of
// the host computer from an Android emulator.
FirebaseStorage storage = FirebaseStorage.getInstance();
storage.useEmulator("10.0.2.2", 9199);
מָהִיר
Storage.storage().useEmulator(withHost: "127.0.0.1", port: 9199)

Web modular API

const { getStorage, connectStorageEmulator } = require("firebase/storage");

const storage = getStorage();
if (location.hostname === "localhost") {
  // Point to the Storage emulator running on localhost.
  connectStorageEmulator(storage, "127.0.0.1", 9199);
} 

Web namespaced API

var storage = firebase.storage();
if (location.hostname === "localhost") {
  // Point to the Storage emulator running on localhost.
  storage.useEmulator("127.0.0.1", 9199);
} 

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

ערכות SDK לניהול

ערכות ה-SDK של Firebase Admin מתחברים אוטומטית לאמולטור Cloud Storage for Firebase כאשר משתנה הסביבה FIREBASE_STORAGE_EMULATOR_HOST מוגדר:

export FIREBASE_STORAGE_EMULATOR_HOST="127.0.0.1:9199"

שים לב שהאמולטור של Cloud Functions מודע אוטומטית לאמולטור Cloud Storage for Firebase כך שתוכל לדלג על שלב זה בעת בדיקת אינטגרציות בין Cloud Functions ואמולטורים של Cloud Storage for Firebase. משתנה הסביבה יוגדר אוטומטית עבור ה-Admin SDK ב-Cloud Storage for Firebase.

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

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

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

מסד הנתונים והאמולטורים של 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 . למידע נוסף, עיין בהפניה לפקודת האמולטור .

כיצד אמולטור Cloud Storage for Firebase שונה מהייצור

לבדיקת יישומי לקוח, אמולטור Cloud Storage for Firebase מתיישר לייצור כמעט בצורה מושלמת ביחס לשטח הפנים של Firebase API. כל הפקודות של Firebase צפויות לעבוד בין ה-SDKs הרגילים של Firebase (פלטפורמות אינטרנט, אנדרואיד ואפל).

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

הבדלים מ-Google Cloud Storage

מוצר Cloud Storage for Firebase, כולל אמולטור Storage, מספק קבוצת משנה של פונקציונליות של Google Cloud Storage (GCS) המתמקדת באובייקטי אחסון, שימושית מאוד לפיתוח אפליקציות Firebase. Cloud Storage for Firebase שונה מ-GCS בדרכים הבאות:

  • Cloud Storage for Firebase אינו תומך כרגע בממשקי API של Bucket ליצירה, רישום, קבלת או מחיקה של דלי אחסון.
  • מ- Google Cloud Storage Objects API , השיטות הבאות נתמכות: copy , delete , get , insert , list , patch , rewrite , update .

ענן IAM

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

הודעות Pub/Sub

אמולטור Cloud Storage for Firebase אינו משתלב עם אמולטור Cloud Pub/Sub ולכן אינו תומך ביצירת ערוצים/הודעות על שינויים באובייקטי אחסון. אנו ממליצים להשתמש ישירות בטריגרים של Cloud Functions Storage.

מטא נתונים ברמת הדלי

האמולטור של Cloud Storage for Firebase אינו תומך באף תצורה ברמת דלי, כולל מחלקת אחסון, תצורת CORS ברמת דלי, תוויות או מדיניות שמירה. Firebase מתכוון לשפר את התמיכה הזו לאורך זמן.

מה הלאה?