برنامه‌تان را متصل کنید و نمونه‌سازی را شروع کنید


قبل‌از اینکه با Firebase Local Emulator Suite شروع کنید، مطمئن شوید که پروژه Firebase ایجاد کرده‌اید، محیط توسعه نرم‌افزار خود را راه‌اندازی کرده‌اید، و کیت‌های توسعه نرم‌افزار Firebase را برای پلاتفرم خود طبق موضوعات شروع به کار با Firebase برای پلاتفرم خود انتخاب و نصب کرده‌اید: Apple، Android یا وب.

نمونه نخستین و آزمایش

Local Emulator Suite حاوی چندین شبیه‌ساز محصول است، همان‌طور که در مقدمه‌ای بر Firebase Local Emulator Suite شرح داده شده است. می‌توانید با شبیه‌سازهای تکی و همچنین ترکیبی از شبیه‌سازها، بسته به نیازتان، نمونه اولیه بسازید و آزمایش کنید، که این امر به محصولات Firebase که در تولید استفاده می‌کنید بستگی دارد.

تعامل بین پایگاه داده Firebase و شبیه‌سازهای توابع
شبیه‌سازهای پایگاه داده و Cloud Functions به‌عنوان بخشی از Local Emulator Suite کامل.

برای این موضوع، برای معرفی گردش کار Local Emulator Suite، فرض کنیم شما روی برنامه‌ای کار می‌کنید که از ترکیب معمولی محصولات استفاده می‌کند: یک پایگاه داده Firebase و توابع ابری که توسط عملیات روی آن پایگاه داده راه‌اندازی می‌شوند.

پس‌از مقداردهی اولیه پروژه Firebase به‌صورت محلی، چرخه توسعه بااستفاده از Local Emulator Suite معمولاً سه مرحله خواهد داشت:

  1. ویژگی‌های نمونه اولیه به‌صورت تعاملی با شبیه‌سازها و Emulator Suite UI.

  2. اگر از شبیه‌ساز پایگاه داده یا شبیه‌ساز Cloud Functions استفاده می‌کنید، مرحله یک‌باره‌ای را برای متصل کردن برنامه‌تان به شبیه‌سازها انجام دهید.

  3. آزمایش‌هایتان را با شبیه‌سازها و دستورگان‌های سفارشی خودکار کنید.

راه‌اندازی پروژه Firebase به‌صورت محلی

مطمئن شوید که CLI را نصب کرده‌اید یا آن را به جدیدترین نسخه به‌روزرسانی کرده‌اید.

curl -sL firebase.tools | bash

اگر قبلاً این کار را نکرده‌اید، دایرکتوری کاری فعلی را به‌عنوان پروژه Firebase مقداردهی اولیه کنید و با دنبال کردن پیام‌واره‌های روی صفحه مشخص کنید که از Cloud Functions و Cloud Firestore یا Realtime Database استفاده می‌کنید:

firebase init

اکنون دایرکتوری پروژه شما حاوی فایل‌های پیکربندی Firebase، یک Firebase Security Rules فایل تعریف برای پایگاه داده، یک دایرکتوری functions حاوی کد توابع ابری، و فایل‌های پشتیبانی دیگر خواهد بود.

نمونه نخستین تعاملی

Local Emulator Suite به‌گونه‌ای طراحی شده است که به شما امکان می‌دهد به‌سرعت ویژگی‌های جدید را نمونه‌سازی کنید، و میانای کاربر داخلی Suite یکی از مفیدترین ابزارهای نمونه‌سازی آن است. این کار کمی شبیه به اجرای کنسول Firebase به‌صورت محلی است.

بااستفاده از Emulator Suite UI، می‌توانید طراحی پایگاه داده را تکرار کنید، جریان‌های داده مختلف شامل توابع ابری را امتحان کنید، تغییرات «قوانین امنیتی» را ارزیابی کنید، گزارش‌ها را بررسی کنید تا عملکرد سرویس‌های پس‌بک خود را تأیید کنید، و موارد دیگر. سپس، اگر می‌خواهید از نو شروع کنید، کافی است پایگاه داده‌تان را پاک کنید و با ایده طراحی جدیدی از نو شروع کنید.

همه این‌ها وقتی دردسترس است که Local Emulator Suite را با این‌ها شروع کنید:

firebase emulators:start

برای ساختن نمونه اولیه برنامه فرضی‌مان، بیایید یک تابع ابری پایه را راه‌اندازی و آزمایش کنیم تا ورودی‌های نوشتاری را در پایگاه داده اصلاح کنیم، و آن پایگاه داده را هم ایجاد کنیم و هم پر کنیم در Emulator Suite UI تا آن را راه‌اندازی کنیم.

  1. با ویرایش کردن فایل functions/index.js در فهرست راهنمای پروژه‌تان، تابع ابری‌ای ایجاد کنید که با نوشتن پایگاه داده راه‌اندازی می‌شود. محتویات فایل موجود را با قطعه کد زیر جایگزین کنید. این تابع تغییرات اسناد را در مجموعه messages گوش می‌دهد، محتوای فیلد original سند را به حروف بزرگ تبدیل می‌کند، و نتیجه را در فیلد uppercase آن سند ذخیره می‌کند.
  2.   const functions = require('firebase-functions/v1');
    
      exports.makeUppercase = functions.firestore.document('/messages/{documentId}')
          .onCreate((snap, context) => {
            const original = snap.data().original;
            console.log('Uppercasing', context.params.documentId, original);
            const uppercase = original.toUpperCase();
            return snap.ref.set({uppercase}, {merge: true});
          });
      
  3. راه‌اندازی Local Emulator Suite با firebase emulators:start. شبیه‌سازهای Cloud Functions و پایگاه داده راه‌اندازی می‌شوند و به‌طور خودکار برای همکاری با یکدیگر پیکربندی می‌شوند.
  4. میانای کاربر را در مرورگرتان در http://localhost:4000 مشاهده کنید. درگاه ۴۰۰۰ درگاه پیش‌فرض برای میانای کاربر است، اما پیام‌های پایانه را که توسط Firebase CLI برونداد می‌شود بررسی کنید. به وضعیت شبیه‌سازهای دردسترس توجه کنید. در مورد ما، شبیه‌سازهای Cloud Functions و Cloud Firestore اجرا خواهند شد.
    تصویر من
  5. در UI، در برگه Firestore > داده، روی شروع مجموعه کلیک کنید و دستورالعمل‌ها را برای ایجاد سند جدید در messages مجموعه، با نام فیلد original و مقدار test دنبال کنید. این کار تابع ابری ما را راه‌اندازی می‌کند. مشاهده کنید که فیلد جدید uppercase به‌زودی ظاهر می‌شود و با رشته «TEST» پر شده است.
    تصویر من تصویر من
  6. در برگه Firestore > درخواست‌ها، درخواست‌های ارائه‌شده به پایگاه داده شبیه‌سازی‌شده‌تان را بررسی کنید، ازجمله همه ارزیابی‌های Firebase Security Rules که به‌عنوان بخشی از برآورده کردن آن درخواست‌ها انجام شده است.
  7. زبانه گزارش‌ها را بررسی کنید تا مطمئن شوید که تابع شما هنگام به‌روزرسانی پایگاه داده با خطایی مواجه نشده است.

می‌توانید به‌راحتی بین کد تابع ابری و ویرایش‌های پایگاه داده تعاملی تکرار کنید تا به جریان داده‌ای که به‌دنبال آن هستید برسید، بدون اینکه کد دسترسی به پایگاه داده درون‌برنامه را لمس کنید، بازهمگردانی کنید، و مجموعه آزمون را دوباره اجرا کنید.

متصل کردن برنامه به شبیه‌سازها

وقتی با نمونه‌سازی تعاملی پیشرفت خوبی داشتید و روی یک طراحی توافق کردید، آماده خواهید بود تا بااستفاده از کیت توسعه نرم‌افزار مناسب، کد دسترسی به پایگاه داده را به برنامه‌تان اضافه کنید. همچنان از برگه پایگاه داده و برای عملکردها، از برگه گزارش‌ها در Emulator Suite UI استفاده خواهید کرد تا تأیید کنید که رفتار برنامه‌تان درست است.

به‌خاطر داشته باشید که Local Emulator Suite ابزار توسعه محلی است. نوشتن در پایگاه‌های داده تولیدی شما باعث راه‌اندازی عملکردهایی که به‌صورت محلی نمونه‌سازی می‌کنید نخواهد شد.

برای اینکه برنامه‌تان را به نوشتن در پایگاه داده تغییر دهید، باید کلاس‌های آزمایشی یا پیکربندی درون‌برنامه‌ای را به شبیه‌ساز Cloud Firestore ارجاع دهید.

Kotlin
// 10.0.2.2 is the special IP address to connect to the 'localhost' of
// the host computer from an Android emulator.
val firestore = Firebase.firestore
firestore.useEmulator("10.0.2.2", 8080)

firestore.firestoreSettings = firestoreSettings {
    isPersistenceEnabled = false
}
Java
// 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);
Swift
let settings = Firestore.firestore().settings
settings.host = "127.0.0.1:8080"
settings.cacheSettings = MemoryCacheSettings()
settings.isSSLEnabled = false
Firestore.firestore().settings = settings
Unity
FirebaseFirestore db = FirebaseFirestore.DefaultInstance;
// Connects to the Firestore Emulator running on port 8080
db.Settings.Host = "127.0.0.1:8080";
db.Settings.SslEnabled = false;

Web

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

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

Web

// Firebase previously initialized using firebase.initializeApp().
var db = firebase.firestore();
if (location.hostname === "localhost") {
  db.useEmulator("127.0.0.1", 8080);
}

آزمایش‌هایتان را با دستورگان سفارشی خودکار کنید

اکنون نوبت آخرین مرحله گردش کار کلی است. وقتی نمونه اولیه ویژگی‌تان را در برنامه ساختید و در همه پلاتفرم‌هایتان امیدوارکننده به‌نظر رسید، می‌توانید به پیاده‌سازی و آزمایش نهایی بپردازید. برای آزمایش واحد و گردش‌های کاری CI، می‌توانید شبیه‌سازها را راه‌اندازی کنید، آزمایش‌های اسکریپت‌شده را اجرا کنید، و شبیه‌سازها را در یک تماس با فرمان exec خاموش کنید:

firebase emulators:exec "./testdir/test.sh"

کاوش شبیه‌سازهای تکی با جزئیات بیشتر

اکنون که دیدید گردش کار پایه سمت کارخواه چگونه است، می‌توانید جزئیات مربوط به شبیه‌سازهای تکی در «مجموعه» را ادامه دهید، ازجمله نحوه استفاده از آن‌ها برای توسعه برنامه سمت سرور:

بعد چه می‌شود؟

حتماً موضوعات مربوط به شبیه‌سازهای خاص پیوندشده در بالا را بخوانید. سپس: