Join us in person and online for Firebase Summit on October 18, 2022. Learn how Firebase can help you accelerate app development, release your app with confidence, and scale with ease. Register now

Podłącz swoją aplikację i zacznij prototypować

Zadbaj o dobrą organizację dzięki kolekcji Zapisuj i kategoryzuj treści zgodnie ze swoimi preferencjami.

Zanim zaczniesz korzystać z pakietu Firebase Local Emulator Suite, upewnij się, że utworzyłeś projekt Firebase, skonfigurujesz środowisko programistyczne oraz wybrałeś i zainstalowałeś pakiety SDK Firebase dla swojej platformy zgodnie z tematami Wprowadzenie do Firebase dla Twojej platformy: Apple , Android lub Internet .

Prototyp i test

Pakiet emulatorów lokalnych zawiera kilka emulatorów produktów, zgodnie z opisem we wprowadzeniu do pakietu emulatorów lokalnych Firebase . Możesz prototypować i testować za pomocą pojedynczych emulatorów, a także kombinacji emulatorów, według własnego uznania, odpowiednio do produktów Firebase, których używasz w produkcji.

Interakcja między bazą danych Firebase a emulatorami funkcji
Emulatory baz danych i funkcji w chmurze w ramach pełnego pakietu emulatorów lokalnych .

W tym temacie, aby przedstawić przepływ pracy lokalnego pakietu emulatorów, załóżmy, że pracujesz nad aplikacją, która używa typowej kombinacji produktów: bazy danych Firebase i funkcji w chmurze wyzwalanych przez operacje na tej bazie danych.

Po lokalnym zainicjowaniu projektu Firebase cykl programistyczny przy użyciu lokalnego pakietu emulatorów będzie zwykle składał się z trzech kroków:

  1. Prototype działa interaktywnie z emulatorami i interfejsem użytkownika pakietu Emulator Suite.

  2. Jeśli używasz emulatora bazy danych lub emulatora Cloud Functions, wykonaj jednorazowy krok, aby połączyć aplikację z emulatorami.

  3. Zautomatyzuj swoje testy za pomocą emulatorów i niestandardowych skryptów.

Zainicjuj lokalnie projekt Firebase

Upewnij się, że zainstalowałeś CLI lub zaktualizowałeś do najnowszej wersji .

curl -sL firebase.tools | bash

Jeśli jeszcze tego nie zrobiłeś, zainicjuj bieżący katalog roboczy jako projekt Firebase, postępując zgodnie z instrukcjami wyświetlanymi na ekranie, aby określić, że używasz Cloud Functions i Cloud Firestore lub Bazy danych czasu rzeczywistego :

firebase init

Twój katalog projektu będzie teraz zawierał pliki konfiguracyjne Firebase, plik definicji reguł zabezpieczeń Firebase dla bazy danych, katalog functions zawierający kod funkcji w chmurze i inne pliki pomocnicze.

Prototypuj interaktywnie

Pakiet lokalnych emulatorów został zaprojektowany, aby umożliwić szybkie prototypowanie nowych funkcji, a wbudowany interfejs użytkownika pakietu jest jednym z najbardziej przydatnych narzędzi do prototypowania. To trochę tak, jakby konsola Firebase działała lokalnie.

Korzystając z interfejsu użytkownika pakietu Emulator Suite, możesz iterować projekt bazy danych, wypróbowywać różne przepływy danych obejmujące funkcje w chmurze, oceniać zmiany reguł zabezpieczeń, sprawdzać dzienniki, aby potwierdzić wydajność usług zaplecza i nie tylko. Następnie, jeśli chcesz zacząć od nowa, po prostu wyczyść bazę danych i zacznij od nowa z nowym pomysłem na projekt.

Wszystko to jest dostępne po uruchomieniu lokalnego pakietu emulatorów za pomocą:

firebase emulators:start

Aby stworzyć prototyp naszej hipotetycznej aplikacji, skonfigurujmy i przetestujmy podstawową funkcję chmury, aby zmodyfikować wpisy tekstowe w bazie danych, a następnie utwórzmy i wypełnijmy tę bazę danych w interfejsie użytkownika pakietu emulatorów, aby ją uruchomić.

  1. Utwórz funkcję w chmurze wyzwalaną przez zapisy bazy danych, edytując plik functions/index.js w katalogu projektu. Zastąp zawartość istniejącego pliku następującym fragmentem. Ta funkcja nasłuchuje zmian w dokumentach w kolekcji messages , konwertuje zawartość original pola dokumentu na wielkie litery i przechowuje wynik w polu tego dokumentu zawierającym uppercase .
  2.   const functions = require('firebase-functions');
    
      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. Uruchom pakiet emulatorów lokalnych z firebase emulators:start . Uruchomią się funkcje Cloud Functions i emulatory bazy danych, automatycznie skonfigurowane do współpracy.
  4. Wyświetl interfejs użytkownika w przeglądarce pod http://localhost:4000 . Port 4000 jest domyślnym interfejsem użytkownika, ale sprawdź komunikaty terminala wyprowadzane przez interfejs Firebase CLI. Zwróć uwagę na stan dostępnych emulatorów. W naszym przypadku będą działać emulatory Cloud Functions i Cloud Firestore.
    Mój obraz
  5. W interfejsie użytkownika na karcie Firestore > Dane kliknij Rozpocznij zbieranie i postępuj zgodnie z monitami, aby utworzyć nowy dokument w kolekcji messages z nazwą pola original i test wartości . To uruchamia naszą funkcję chmury. Zauważ, że wkrótce pojawi się nowe pole uppercase , wypełnione ciągiem „TEST”.
    Mój obrazMój obraz
  6. Na karcie Firestore > Żądania sprawdź żądania wysyłane do emulowanej bazy danych, w tym wszystkie oceny reguł zabezpieczeń Firebase wykonane w ramach realizacji tych żądań.
  7. Sprawdź kartę Dzienniki , aby upewnić się, że funkcja nie napotkała błędów podczas aktualizacji bazy danych.

Możesz łatwo iterować między kodem funkcji w chmurze a interaktywnymi edycjami bazy danych, aż uzyskasz przepływ danych, którego szukasz, bez dotykania kodu dostępu do bazy danych w aplikacji, ponownej kompilacji i ponownego uruchamiania zestawów testów.

Połącz swoją aplikację z emulatorami

Gdy zrobisz dobre postępy w interaktywnym prototypowaniu i zdecydujesz się na projekt, będziesz gotowy do dodania kodu dostępu do bazy danych do swojej aplikacji przy użyciu odpowiedniego pakietu SDK. Będziesz nadal korzystać z karty bazy danych i, w przypadku funkcji, karty Dzienniki w interfejsie użytkownika pakietu emulatorów, aby potwierdzić, że zachowanie aplikacji jest prawidłowe.

Pamiętaj, że Local Emulator Suite to lokalne narzędzie programistyczne. Zapisy w produkcyjnych bazach danych nie będą wyzwalać funkcji, które tworzysz lokalnie.

Aby przełączyć się na wykonywanie przez aplikację zapisów w bazie danych, musisz wskazać swoje klasy testowe lub konfigurację w aplikacji w emulatorze Cloud Firestore.

Android
// 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);
Szybki
let settings = Firestore.firestore().settings
settings.host = "localhost:8080"
settings.isPersistenceEnabled = false 
settings.isSSLEnabled = false
Firestore.firestore().settings = settings

Web version 9

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

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

Web version 8

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

Zautomatyzuj swoje testy za pomocą niestandardowych skryptów

Przejdźmy teraz do ostatniego ogólnego etapu przepływu pracy. Po stworzeniu prototypu funkcji w aplikacji, która wygląda obiecująco na wszystkich platformach, możesz przejść do ostatecznej implementacji i testowania. W przypadku testów jednostkowych i przepływów pracy CI można uruchamiać emulatory, uruchamiać testy skryptowe i wyłączać emulatory w jednym wywołaniu za pomocą polecenia exec :

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

Poznaj dokładniej poszczególne emulatory

Teraz, gdy wiesz już, jak wygląda podstawowy przepływ pracy po stronie klienta, możesz kontynuować szczegółowe informacje o poszczególnych emulatorach w pakiecie, w tym o tym, jak ich używać do tworzenia aplikacji po stronie serwera:

Co następne?

Koniecznie przeczytaj tematy związane z określonymi emulatorami, do których linki znajdują się powyżej. Następnie: