قبل از اتصال برنامه خود به شبیهساز Cloud Storage for Firebase ، مطمئن شوید که گردش کار کلی Firebase Local Emulator Suite را درک کردهاید ، و Local Emulator Suite را نصب و پیکربندی کردهاید و دستورات CLI آن را بررسی کردهاید.
یک پروژه فایربیس انتخاب کنید
Firebase Local Emulator Suite محصولات مربوط به یک پروژه فایربیس را شبیهسازی میکند.
برای انتخاب پروژه مورد استفاده، قبل از شروع شبیهسازها، در CLI firebase use در دایرکتوری کاری خود اجرا کنید. یا میتوانید پرچم --project را به هر دستور شبیهساز ارسال کنید.
Local Emulator Suite از شبیهسازی پروژههای واقعی Firebase و پروژههای آزمایشی پشتیبانی میکند.
| نوع پروژه | ویژگیها | استفاده با شبیهسازها |
|---|---|---|
| واقعی | یک پروژه واقعی Firebase، پروژهای است که شما ایجاد و پیکربندی کردهاید (به احتمال زیاد از طریق کنسول Firebase ). پروژههای واقعی منابع زندهای دارند، مانند نمونههای پایگاه داده، مخازن ذخیرهسازی، توابع یا هر منبع دیگری که برای آن پروژه Firebase تنظیم کردهاید. | هنگام کار با پروژههای واقعی Firebase، میتوانید شبیهسازها را برای هر یا همه محصولات پشتیبانیشده اجرا کنید. برای هر محصولی که شبیهسازی نمیکنید، برنامهها و کد شما با منبع زنده (نمونه پایگاه داده، مخزن ذخیرهسازی، تابع و غیره) تعامل خواهند داشت. |
| نسخه آزمایشی | یک پروژه آزمایشی فایربیس هیچ پیکربندی واقعی فایربیس و هیچ منبع زندهای ندارد. این پروژهها معمولاً از طریق codelabs یا سایر آموزشها قابل دسترسی هستند. شناسههای پروژه برای پروژههای نمایشی دارای پیشوند | هنگام کار با پروژههای آزمایشی Firebase، برنامهها و کد شما فقط با شبیهسازها تعامل دارند. اگر برنامه شما سعی کند با منبعی که شبیهساز برای آن اجرا نمیشود، تعامل داشته باشد، آن کد با شکست مواجه خواهد شد. |
توصیه میکنیم تا حد امکان از پروژههای نمایشی استفاده کنید. مزایا عبارتند از:
- راهاندازی آسانتر، زیرا میتوانید شبیهسازها را بدون ایجاد یک پروژه Firebase اجرا کنید
- ایمنی قویتر، زیرا اگر کد شما بهطور تصادفی منابع شبیهسازی نشده (تولیدی) را فراخوانی کند، هیچ شانسی برای تغییر دادهها، استفاده و صدور صورتحساب وجود ندارد.
- پشتیبانی آفلاین بهتر، زیرا نیازی به دسترسی به اینترنت برای دانلود پیکربندی SDK شما نیست.
برنامه خود را برای ارتباط با شبیهسازها آماده کنید
پلتفرمهای اندروید، اپل و وب SDKها
پیکربندی درونبرنامهای یا کلاسهای آزمایشی خود را برای تعامل با شبیهساز 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);
سویفت
Storage.storage().useEmulator(withHost: "127.0.0.1", port: 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 Storage for Firebase با استفاده از شبیهساز فعال میشوند ، هیچ تنظیمات اضافی لازم نیست. وقتی شبیهسازهای Cloud Storage for Firebase و Cloud Functions هر دو در حال اجرا باشند، به طور خودکار با هم کار میکنند.
Admin SDK
Firebase Admin SDK به طور خودکار به 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 تنظیم میشود.
اگر میخواهید کد Admin SDK شما به یک شبیهساز مشترک که در محیط دیگری اجرا میشود متصل شود، باید همان شناسه پروژهای را که با استفاده از Firebase CLI تنظیم کردهاید، مشخص کنید. میتوانید شناسه پروژه را مستقیماً به initializeApp ارسال کنید یا متغیر محیطی GCLOUD_PROJECT را تنظیم کنید.
SDK مدیریت Node.js
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 نیز کار میکنند. برای اطلاعات بیشتر، به مرجع دستور emulator مراجعه کنید.
تفاوت Cloud Storage for Firebase با نسخه اصلی
برای آزمایش برنامههای کلاینت، شبیهساز Cloud Storage for Firebase تقریباً از نظر سطح API Firebase کاملاً با محیط عملیاتی هماهنگ است. انتظار میرود همه دستورات Firebase بین SDK های معمولی Firebase (پلتفرمهای وب، اندروید و اپل) کار کنند.
برای آزمایش برنامههای سمت سرور، محدودیتهایی وجود دارد. SDKهای مدیریتی Firebase از سطح API Google Cloud استفاده میکنند و همه نقاط پایانی این API شبیهسازی نمیشوند. به عنوان یک قاعده کلی، هر کاری که بتوان از SDKهای کلاینت انجام داد (آپلود یا حذف فایلها، دریافت و تنظیم فراداده) برای استفاده از SDKهای مدیریتی نیز پیادهسازی میشود، اما هر کاری فراتر از آن امکانپذیر نیست. موارد استثنای قابل توجه در زیر فهرست شدهاند.
تفاوتها با فضای ذخیرهسازی ابری گوگل
محصول Cloud Storage for Firebase ، شامل شبیهساز Storage، زیرمجموعهای از قابلیتهای Google Cloud Storage (GCS) را با تمرکز بر اشیاء ذخیرهسازی ارائه میدهد که برای توسعه برنامههای Firebase بسیار مفید است. Cloud Storage for Firebase از جهات زیر با GCS متفاوت است:
- Cloud Storage for Firebase در حال حاضر از APIهای
Bucketبرای ایجاد، فهرستبندی، دریافت یا حذف باکتهای ذخیرهسازی پشتیبانی نمیکند. - از API اشیاء ذخیرهسازی ابری گوگل ، متدهای زیر پشتیبانی میشوند:
copy،delete،get،insert،list،patch،rewrite،update.
مدیریت دسترسی ابری (IAM)
مجموعه شبیهساز Firebase تلاشی برای تکرار یا رعایت هیچ رفتار مرتبط با IAM برای اجرا نمیکند. شبیهسازها به قوانین امنیتی Firebase ارائه شده پایبند هستند، اما در موقعیتهایی که معمولاً از IAM استفاده میشود، به عنوان مثال برای تنظیم توابع ابری که حساب سرویس و در نتیجه مجوزها را فراخوانی میکنند، شبیهساز قابل تنظیم نیست و از حساب کاربری سراسری موجود در دستگاه توسعهدهنده شما استفاده میکند، مشابه اجرای مستقیم یک اسکریپت محلی.
اعلانهای انتشار/زیرمجموعه
شبیهساز Cloud Storage for Firebase با شبیهساز Cloud Pub/Sub ادغام نمیشود و بنابراین از ایجاد کانالها/اعلانها برای تغییرات شیء ذخیرهسازی پشتیبانی نمیکند. توصیه میکنیم مستقیماً از محرکهای Cloud Functions Storage استفاده کنید.
فراداده سطح سطل
شبیهساز Cloud Storage for Firebase از هیچ پیکربندی سطح سطلی شامل کلاس ذخیرهسازی، پیکربندی CORS سطح سطلی، برچسبها یا سیاستهای نگهداری پشتیبانی نمیکند. Firebase قصد دارد این پشتیبانی را به مرور زمان بهبود بخشد.
بعدش چی؟
- برای مجموعهای منتخب از ویدیوها و مثالهای آموزشی دقیق، لیست پخش آموزش شبیهسازهای Firebase را دنبال کنید.
- از آنجایی که توابع فعالشده معمولاً با Cloud Storage for Firebase ادغام میشوند، برای کسب اطلاعات بیشتر در مورد Cloud Functions for Firebase به Run functions locally مراجعه کنید.