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


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

نمونه اولیه و آزمایش

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 به گونه‌ای طراحی شده است که به شما امکان می‌دهد به سرعت ویژگی‌های جدید را نمونه‌سازی کنید و رابط کاربری داخلی این مجموعه یکی از مفیدترین ابزارهای نمونه‌سازی آن است. این کمی شبیه اجرای کنسول Firebase به صورت محلی است.

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

همه اینها وقتی در دسترس است که 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. در رابط کاربری، در تب Firestore > Data ، روی Start collection کلیک کنید و دستورالعمل‌ها را دنبال کنید تا یک سند جدید در یک مجموعه messages با نام فیلد original و مقدار test ایجاد شود. این کار تابع cloud ما را فعال می‌کند. مشاهده می‌کنید که یک فیلد جدید uppercase به زودی ظاهر می‌شود که با رشته "TEST" پر شده است.
    تصویر منتصویر من
  6. در برگه Firestore > Requests ، درخواست‌های ارسالی به پایگاه داده شبیه‌سازی شده خود، از جمله تمام ارزیابی‌های Firebase Security Rules که به عنوان بخشی از انجام آن درخواست‌ها انجام شده است را بررسی کنید.
  7. برای اطمینان از اینکه تابع شما هنگام به‌روزرسانی پایگاه داده با خطا مواجه نشده است، تب Logs را بررسی کنید.

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

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

وقتی در نمونه‌سازی تعاملی پیشرفت خوبی داشتید و روی یک طرح به توافق رسیدید، آماده خواهید بود تا کد دسترسی به پایگاه داده را با استفاده از SDK مناسب به برنامه خود اضافه کنید. برای تأیید صحت رفتار برنامه خود، همچنان از تب پایگاه داده و برای توابع، از تب Logs در 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);
سویفت
let settings = Firestore.firestore().settings
settings.host = "127.0.0.1:8080"
settings.cacheSettings = MemoryCacheSettings()
settings.isSSLEnabled = false
Firestore.firestore().settings = settings

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"

شبیه‌سازهای تکی را با عمق بیشتری بررسی کنید

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

بعدش چی؟

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