قبل از اتصال برنامهتان به شبیهساز Cloud Storage for Firebase، مطمئن شوید که جریان کاری مجموعه شبیهساز محلی Firebase را درک کردهاید و مجموعه شبیهساز محلی را نصب و پیکربندی کرده و دستورات CLI آن را مرور میکنید.
یک پروژه Firebase را انتخاب کنید
مجموعه شبیه ساز محلی Firebase محصولات را برای یک پروژه Firebase تقلید می کند.
برای انتخاب پروژه مورد استفاده، قبل از شروع شبیه سازها، در CLI firebase use
. یا، می توانید پرچم --project
را به هر فرمان شبیه ساز ارسال کنید.
Local Emulator Suite از شبیه سازی پروژه های Firebase واقعی و پروژه های آزمایشی پشتیبانی می کند.
نوع پروژه | امکانات | با شبیه سازها استفاده کنید |
---|---|---|
واقعی | یک پروژه Firebase واقعی پروژه ای است که شما ایجاد و پیکربندی کرده اید (به احتمال زیاد از طریق کنسول Firebase). پروژه های واقعی دارای منابع زنده هستند، مانند نمونه های پایگاه داده، سطل های ذخیره سازی، توابع یا هر منبع دیگری که برای آن پروژه Firebase تنظیم کرده اید. | هنگام کار با پروژه های Firebase واقعی، می توانید شبیه سازها را برای هر یک یا همه محصولات پشتیبانی شده اجرا کنید. برای هر محصولی که شبیهسازی نمیکنید، برنامهها و کد شما با منبع زنده (نمونه پایگاه داده، سطل ذخیرهسازی، عملکرد و غیره) تعامل خواهند داشت. |
نسخه ی نمایشی | یک پروژه Firebase آزمایشی هیچ پیکربندی Firebase واقعی و هیچ منبع زنده ای ندارد. این پروژه ها معمولاً از طریق نرم افزارهای کد یا آموزش های دیگر قابل دسترسی هستند. شناسه های پروژه برای پروژه های نمایشی دارای پیشوند | هنگام کار با پروژه های Firebase آزمایشی، برنامه ها و کد شما فقط با شبیه سازها تعامل دارند. اگر برنامه شما سعی کند با منبعی که شبیه ساز برای آن اجرا نمی شود تعامل داشته باشد، آن کد با شکست مواجه می شود. |
توصیه می کنیم تا جایی که امکان دارد از پروژه های نمایشی استفاده کنید. مزایا عبارتند از:
- راه اندازی آسان تر، زیرا می توانید شبیه سازها را بدون ایجاد پروژه Firebase اجرا کنید
- ایمنی قوی تر، زیرا اگر کد شما به طور تصادفی منابع غیر شبیه سازی شده (تولید) را فراخوانی کند، هیچ شانسی برای تغییر داده ها، استفاده و صورتحساب وجود ندارد.
- پشتیبانی آفلاین بهتر است، زیرا برای دانلود پیکربندی SDK نیازی به دسترسی به اینترنت نیست.
برنامه خود را برای صحبت با شبیه سازها ابزار کنید
پلتفرمهای اندروید، اپل و وب 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:"localhost", port:9199)
وب نسخه 8
var storage = firebase.storage(); if (location.hostname === "localhost") { // Point to the Storage emulator running on localhost. storage.useEmulator("localhost", 9199); }
وب نسخه 9
const { getStorage, connectStorageEmulator } = require("firebase/storage"); const storage = getStorage(); if (location.hostname === "localhost") { // Point to the Storage emulator running on localhost. connectStorageEmulator(storage, "localhost", 9199); }
برای آزمایش عملکردهای Cloud که توسط Cloud Storage برای رویدادهای Firebase با استفاده از شبیهساز راهاندازی میشوند، نیازی به تنظیم اضافی نیست. وقتی شبیه سازهای Cloud Storage for Firebase و Cloud Functions هر دو در حال اجرا هستند، به طور خودکار با هم کار می کنند.
SDK های مدیریت
هنگامی که متغیر محیطی FIREBASE_STORAGE_EMULATOR_HOST
تنظیم شود، کیت توسعه نرم افزاری مدیریت Firebase به طور خودکار به شبیه ساز Cloud Storage for Firebase متصل می شود:
export FIREBASE_STORAGE_EMULATOR_HOST="localhost:9199"
توجه داشته باشید که شبیه ساز Cloud Functions به طور خودکار از شبیه ساز Cloud Storage for Firebase آگاه است، بنابراین می توانید هنگام آزمایش ادغام بین توابع Cloud و شبیه سازهای Cloud Storage برای Firebase از این مرحله صرفنظر کنید. متغیر محیطی به طور خودکار برای Admin SDK در Cloud Storage برای Firebase تنظیم می شود.
اگر میخواهید کد Admin SDK شما به یک شبیهساز مشترک که در محیط دیگری اجرا میشود متصل شود، باید همان ID پروژهای را که با استفاده از Firebase CLI تنظیم کردهاید، مشخص کنید. میتوانید یک شناسه پروژه را برای initializeApp
به طور مستقیم ارسال کنید یا متغیر محیطی GCLOUD_PROJECT
را تنظیم کنید.
Node.js Admin SDK
admin.initializeApp({ projectId: "your-project-id" });
متغیر محیطی
export GCLOUD_PROJECT="your-project-id"
واردات و صادرات داده ها
پایگاه داده و شبیه سازهای Cloud Storage برای 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 با توجه به مساحت سطح API Firebase تقریباً کاملاً با تولید هماهنگ می شود. انتظار می رود تمام دستورات Firebase بین SDK های Firebase معمولی (پلتفرم های وب، اندروید و اپل) کار کنند.
برای آزمایش برنامه های سمت سرور، محدودیت هایی وجود دارد. Firebase Admin SDK از سطح Google Cloud API استفاده میکند و همه نقاط پایانی این API شبیهسازی نمیشوند. به عنوان یک قاعده کلی، هر کاری که میتوان از SDKهای کلاینت انجام داد (بارگذاری یا حذف فایلها، دریافت و تنظیم متادیتا) نیز برای استفاده از SDKهای مدیریت اجرا میشود، اما هر چیزی فراتر از آن نیست. استثناهای قابل توجه در زیر ذکر شده است.
تفاوت با Google Cloud Storage
محصول Cloud Storage for Firebase، از جمله شبیهساز Storage، زیرمجموعهای از عملکرد Google Cloud Storage (GCS) را با تمرکز بر اشیاء ذخیرهسازی ارائه میکند که برای توسعه برنامههای Firebase بسیار مفید است. Cloud Storage برای Firebase به روشهای زیر با GCS متفاوت است:
- Cloud Storage برای Firebase در حال حاضر از
Bucket
API برای ایجاد، فهرستبندی، دریافت یا حذف سطلهای ذخیرهسازی پشتیبانی نمیکند. - از Google Cloud Storage Objects API ، روشهای زیر پشتیبانی میشوند:
copy
،delete
،get
،insert
،list
،patch
،rewrite
،update
.
Cloud IAM
مجموعه Firebase Emulator تلاشی برای تکرار یا احترام به رفتارهای مرتبط با IAM برای اجرا ندارد. شبیه سازها به قوانین امنیتی Firebase ارائه شده پایبند هستند، اما در شرایطی که IAM به طور معمول مورد استفاده قرار می گیرد، به عنوان مثال برای تنظیم عملکردهای ابری که حساب سرویس را فراخوانی می کند و بنابراین مجوزها، شبیه ساز قابل پیکربندی نیست و از حساب جهانی در دسترس در دستگاه توسعه دهنده شما استفاده می کند. مشابه اجرای مستقیم یک اسکریپت محلی.
اعلانهای Pub/Sub
شبیهساز Cloud Storage for Firebase با شبیهساز Cloud Pub/Sub ادغام نمیشود و بنابراین از ایجاد کانالها/اعلانها برای تغییرات شی ذخیرهسازی پشتیبانی نمیکند. توصیه میکنیم مستقیماً از محرکهای Cloud Functions Storage استفاده کنید.
فراداده در سطح سطل
شبیهساز Cloud Storage for Firebase از هیچ پیکربندی در سطح سطل از جمله کلاس ذخیرهسازی، پیکربندی CORS در سطح سطل، برچسبها یا خطمشیهای حفظ پشتیبانی نمیکند. Firebase قصد دارد این پشتیبانی را در طول زمان بهبود بخشد.
بعدش چی؟
- برای مجموعهای از ویدیوها و مثالهای دقیق نحوه انجام، فهرست پخش آموزش شبیهسازهای Firebase را دنبال کنید.
- از آنجایی که توابع راهاندازی شده یک ادغام معمولی با Cloud Storage برای Firebase هستند، درباره شبیهساز Cloud Functions for Firebase در Run functions به صورت محلی بیشتر بدانید.