قبلاز متصل کردن برنامهتان به شبیهساز Cloud Storage for Firebase، مطمئن شوید که گردش کار کلی Firebase Local Emulator Suite را درک میکنید، و اینکه نصب و پیکربندی Local Emulator Suite را انجام دادهاید و فرمانهای CLI آن را مرور کردهاید.
پروژه Firebase را انتخاب کنید
Firebase Local Emulator Suite محصولات را برای یک پروژه Firebase شبیهسازی میکند.
برای انتخاب پروژه موردنظر، قبلاز شروع شبیهسازها،
firebase use را در فهرست راهنمای کاریتان در CLI اجرا کنید. یا میتوانید پرچم --project را به هر فرمان شبیهساز ارسال کنید.
Local Emulator Suite از شبیهسازی پروژههای واقعی Firebase و پروژههای نمونه پشتیبانی میکند.
| نوع پروژه | ویژگیها | استفاده با شبیهسازها |
|---|---|---|
| رئال |
پروژه Firebase واقعی پروژهای است که شما ایجاد و پیکربندی کردهاید (احتمالاً ازطریق کنسول Firebase). پروژههای واقعی منابع زنده دارند، مانند نمونههای پایگاه داده، سطلهای ذخیرهسازی، توابع، یا هر منبع دیگری که برای آن پروژه Firebase راهاندازی میکنید. |
هنگام کار با پروژههای واقعی Firebase، میتوانید شبیهسازها را برای هرکدام یا همه محصولات پشتیبانیشده اجرا کنید. برای هر محصولی که شبیهسازی نمیکنید، برنامهها و کد شما با منبع فعال (نمونه پایگاه داده، سطل ذخیرهسازی، تابع، و غیره) تعامل خواهند داشت. |
| پخش نمایشی |
پروژه نمایشی Firebase پیکربندی واقعی Firebase و منابع زنده ندارد. این پروژهها معمولاً ازطریق codelabs یا سایر آموزشها قابلدسترسی هستند. شناسههای پروژه برای پروژههای نمایشی پیشوند |
هنگام کار با پروژههای نمایشی Firebase، برنامهها و کد شما فقط با شبیهسازها تعامل دارند. اگر برنامهتان تلاش کند با منبعی تعامل برقرار کند که شبیهساز برای آن اجرا نمیشود، آن کد ناموفق خواهد بود. |
توصیه میکنیم هرجا ممکن است از پروژههای نمایشی استفاده کنید. مزایا عبارتانداز:
- راهاندازی آسانتر، زیرا میتوانید شبیهسازها را بدون ایجاد پروژه Firebase اجرا کنید
- ایمنی قویتر، زیرا اگر کد شما بهطور تصادفی منابع شبیهسازینشده (تولید) را فراخوانی کند، هیچ احتمالی برای تغییر داده، استفاده، و صدور صورتحساب وجود ندارد
- پشتیبانی آفلاین بهتر، زیرا برای بارگیری پیکربندی کیت توسعه نرمافزار نیازی به دسترسی به اینترنت نیست.
برنامهتان را برای صحبت با شبیهسازها آماده کنید
Android، پلاتفرمهای Apple، و کیتهای توسعه نرمافزار وب
پیکربندی درونبرنامهای یا کلاسهای آزمایشی خود را برای تعامل با شبیهساز Cloud Storage for Firebase بهصورت زیر تنظیم کنید.
Kotlin
// 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);
Swift
Storage.storage().useEmulator(withHost: "127.0.0.1", port: 9199)
Unity
FirebaseStorage storage = FirebaseStorage.DefaultInstance; // Connects to the Storage Emulator running on port 9199 storage.UseEmulator("127.0.0.1", 9199);
Web
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
var storage = firebase.storage(); if (location.hostname === "localhost") { // Point to the Storage emulator running on localhost. storage.useEmulator("127.0.0.1", 9199); }
برای آزمایش توابع Cloud راهاندازیشده با رویدادهای Cloud Storage for Firebase بااستفاده از شبیهساز، به راهاندازی دیگری نیاز نیست. وقتی شبیهسازهای Cloud Storage for Firebase و Cloud Functions هردو درحال اجرا باشند، بهطور خودکار باهم کار میکنند.
Admin SDK ثانیه
وقتی متغیر محیطی FIREBASE_STORAGE_EMULATOR_HOST تنظیم شود، Firebase Admin SDK بهطور خودکار به شبیهساز Cloud Storage for Firebase متصل میشود:
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 تنظیم خواهد شد.
اگر میخواهید کد Admin SDK شما به شبیهساز مشترکی که در محیط دیگری اجرا میشود متصل شود، باید همان شناسه پروژهای را که بااستفاده از واسط خط فرمان Firebase تنظیم کردهاید مشخص کنید.
میتوانید شناسه پروژه را مستقیماً به 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 مطابقت دارد. انتظار میرود همه فرمانهای Firebase بین کیتهای توسعه نرمافزار Firebase معمولی (پلاتفرمهای وب، Android، و Apple) کار کنند.
برای آزمایش برنامههای سمت سرور، محدودیتهایی وجود دارد. کیتهای توسعه نرمافزار Firebase Admin از سطح میانای برنامهسازی کاربردی Google Cloud استفاده میکنند و همه نقاط پایانی این میانای برنامهسازی کاربردی شبیهسازی نمیشوند. بهعنوان یک قاعده کلی، هر کاری که ازطریق کیتهای توسعه نرمافزار کارخواه قابل انجام باشد (بارگذاری یا حذف فایلها، دریافت و تنظیم فراداده) برای استفاده ازطریق کیتهای توسعه نرمافزار سرپرست نیز پیادهسازی شده است، اما هر چیزی فراتر از آن پیادهسازی نشده است. استثناهای قابلتوجه در زیر فهرست شده است.
تفاوتها با Google Cloud Storage
محصول Cloud Storage for Firebase، ازجمله شبیهساز «فضای ذخیرهسازی»، زیرمجموعهای از عملکرد Google Cloud Storage (GCS) را ارائه میدهد که بر اشیای فضای ذخیرهسازی تمرکز دارد و برای توسعه برنامههای Firebase بسیار مفید است. Cloud Storage for Firebase به روشهای زیر با GCS تفاوت دارد:
- درحالحاضر Cloud Storage for Firebase از میاناهای برنامهسازی کاربردی
Bucketبرای ایجاد، فهرست کردن، دریافت، یا حذف کردن دستههای فضای ذخیرهسازی پشتیبانی نمیکند. - از میانای برنامهسازی کاربردی اشیاء Google Cloud Storage،
روشهای زیر پشتیبانی میشود:
copy،delete،get،insert،list،patch،rewrite،update.
Cloud IAM
مجموعه شبیهساز Firebase برای اجرا، هیچگونه رفتار مرتبط با IAM را تکرار یا رعایت نمیکند. شبیهسازها از «قوانین امنیتی Firebase» ارائهشده پیروی میکنند، اما در شرایطی که معمولاً از IAM استفاده میشود، برای مثال برای تنظیم حساب سرویس فراخواننده Cloud Functions و درنتیجه اجازهها، شبیهساز قابلپیکربندی نیست و از حساب دردسترس جهانی در ماشین توسعهدهنده شما استفاده میکند، مشابه اجرای مستقیم اسکریپت محلی.
اعلانهای Pub/Sub
شبیهساز Cloud Storage for Firebase با شبیهساز Cloud Pub/Sub ادغام نمیشود و بنابراین از ایجاد کانال/اعلان برای تغییرات شیء فضای ذخیرهسازی پشتیبانی نمیکند. توصیه میکنیم مستقیماً از راهاندازهای «فضای ذخیرهسازی» Cloud Functions استفاده کنید.
فراداده سطح سطل
شبیهساز Cloud Storage for Firebase از هیچ پیکربندی در سطح دسته، ازجمله کلاس فضای ذخیرهسازی، پیکربندی CORS در سطح دسته، برچسبها، یا خطمشیهای نگهداری پشتیبانی نمیکند. Firebase قصد دارد این پشتیبانی را درطول زمان بهبود بخشد.
بعد چه میشود؟
- برای مجموعهای از ویدیوهای گلچینشده و مثالهای دقیق نحوه انجام کار، فهرست پخش آموزشی شبیهسازهای Firebase را دنبال کنید.
- ازآنجاییکه توابع راهاندازهشده یکپارچهسازی معمولی با Cloud Storage for Firebase هستند، درباره شبیهساز Cloud Functions for Firebase در اجرای توابع بهصورت محلی بیشتر بدانید.