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


قبل از شروع کار با 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.database.ref('/messages/{pushId}/original')
          .onCreate((snapshot, context) => {
            const original = snapshot.val();
            console.log('Uppercasing', context.params.pushId, original);
            const uppercase = original.toUpperCase();
            return snapshot.ref.parent.child('uppercase').set(uppercase);
          });
      
  3. Local Emulator Suite با firebase emulators:start اجرا کنید. Cloud Functions و شبیه‌سازهای پایگاه داده، که به طور خودکار برای همکاری پیکربندی شده‌اند، شروع به کار می‌کنند.
  4. رابط کاربری را در مرورگر خود در http://localhost:4000 مشاهده کنید. پورت ۴۰۰۰ پورت پیش‌فرض رابط کاربری است، اما پیام‌های خروجی ترمینال توسط Firebase CLI را بررسی کنید. به وضعیت شبیه‌سازهای موجود توجه کنید. در مورد ما، شبیه‌سازهای Cloud Functions و Realtime Database اجرا خواهند شد.
    تصویر من
  5. در رابط کاربری، در تب Realtime Database ، از کنترل‌های ویرایشگر محتوای پایگاه داده برای ایجاد مجموعه‌ای از گره‌ها با یک گره messages حاوی گره message1 استفاده کنید، که به نوبه خود شامل گره‌ای با کلید تنظیم شده روی original و مقدار تنظیم شده روی test است. این تابع cloud ما را فعال می‌کند. مشاهده کنید که یک ویژگی جدید uppercase به زودی ظاهر می‌شود و مقدار TEST را دارد.
    تصویر منتصویر من
  6. برای اطمینان از اینکه تابع شما هنگام به‌روزرسانی پایگاه داده، خطاهای inot را اجرا نکرده است، تب Logs را بررسی کنید.

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

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

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

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

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

Kotlin
// 10.0.2.2 is the special IP address to connect to the 'localhost' of
// the host computer from an Android emulator.
val database = Firebase.database
database.useEmulator("10.0.2.2", 9000)
Java
// 10.0.2.2 is the special IP address to connect to the 'localhost' of
// the host computer from an Android emulator.
FirebaseDatabase database = FirebaseDatabase.getInstance();
database.useEmulator("10.0.2.2", 9000);
سویفت
    // In almost all cases the ns (namespace) is your project ID.
let db = Database.database(url:"http://127.0.0.1:9000?ns=YOUR_DATABASE_NAMESPACE")

Web

import { getDatabase, connectDatabaseEmulator } from "firebase/database";

const db = getDatabase();
if (location.hostname === "localhost") {
  // Point to the RTDB emulator running on localhost.
  connectDatabaseEmulator(db, "127.0.0.1", 9000);
} 

Web

var db = firebase.database();
if (location.hostname === "localhost") {
  // Point to the RTDB emulator running on localhost.
  db.useEmulator("127.0.0.1", 9000);
} 

تست‌های خود را با اسکریپت‌های سفارشی خودکار کنید

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

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

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

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

بعدش چی؟

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