Catch up on highlights from Firebase at Google I/O 2023. Learn more

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

w czasie rzeczywistym

Zanim zaczniesz korzystać z Firebase Local Emulator Suite, upewnij się, że utworzyłeś projekt Firebase, skonfigurowałeś swoje środowisko programistyczne oraz wybrałeś i zainstalowałeś Firebase SDK dla swojej platformy, zgodnie z tematami Pierwsze kroki z Firebase dla Twojej platformy: Apple , Android lub WWW .

Prototyp i test

Pakiet Local Emulator Suite zawiera kilka emulatorów produktów, zgodnie z opisem we wprowadzeniu do Firebase Local Emulator Suite . Możesz tworzyć prototypy i testować poszczególne emulatory, a także kombinacje emulatorów, według własnego uznania, odpowiadające produktom Firebase, których używasz w produkcji.

Interakcja między bazą danych Firebase a emulatorami funkcji
Emulatory bazy danych i Cloud Functions w ramach pełnego pakietu Local Emulator Suite .

W tym temacie, aby wprowadzić przepływ pracy pakietu Local Emulator Suite, załóżmy, że pracujesz nad aplikacją, która korzysta z typowej kombinacji produktów: bazy danych Firebase i funkcji chmury wyzwalanych przez operacje na tej bazie danych.

Po lokalnym zainicjowaniu projektu Firebase cykl programowania przy użyciu pakietu Local Emulator Suite zazwyczaj składa się z trzech etapów:

  1. Prototypy działają interaktywnie z emulatorami i interfejsem Emulator Suite.

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

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

Lokalnie zainicjuj projekt Firebase

Upewnij się, że instalujesz interfejs CLI lub aktualizujesz go 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 Realtime Database :

firebase init

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

Prototypuj interaktywnie

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

Korzystając z interfejsu użytkownika Emulator Suite, możesz iterować projekt bazy danych, wypróbowywać różne przepływy danych obejmujące funkcje chmury, oceniać zmiany reguł bezpieczeństwa, sprawdzać dzienniki, aby potwierdzić działanie 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.

To wszystko jest dostępne po uruchomieniu pakietu Local Emulator Suite z:

firebase emulators:start

Aby stworzyć prototyp naszej hipotetycznej aplikacji, skonfigurujmy i przetestujmy podstawową funkcję chmury do modyfikowania wpisów tekstowych w bazie danych, a następnie utwórzmy i wypełnijmy tę bazę danych w interfejsie użytkownika Emulator Suite, aby ją uruchomić.

  1. Utwórz funkcję w chmurze wyzwalaną przez zapis bazy danych, edytując plik functions/index.js w katalogu projektu. Zastąp zawartość istniejącego pliku następującym fragmentem kodu. Ta funkcja nasłuchuje zmian w dokumentach w kolekcji messages , konwertuje zawartość original pola dokumentu na wielkie litery i zapisuje wynik w polu tego dokumentu z 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 Local Emulator Suite z firebase emulators:start . Uruchamiają się funkcje Cloud Functions i emulatory baz danych, które są automatycznie konfigurowane do współpracy.
  4. Wyświetl interfejs użytkownika w przeglądarce pod http://localhost:4000 . Domyślnym portem interfejsu użytkownika jest port 4000, ale sprawdź komunikaty terminala wysyłane przez 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 opcję Rozpocznij zbieranie i postępuj zgodnie z monitami, aby utworzyć nowy dokument w kolekcji messages z nazwą pola original i value test . 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 wysłane do emulowanej bazy danych, w tym wszystkie oceny reguł bezpieczeństwa Firebase wykonane w ramach realizacji tych żądań.
  7. Sprawdź kartę Dzienniki , aby potwierdzić, że funkcja nie napotkała błędów podczas aktualizowania bazy danych.

Możesz łatwo iterować między kodem funkcji chmury a edycjami interaktywnej bazy danych, aż uzyskasz pożądany przepływ danych, 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 poczynisz duże 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 zestawu SDK. Będziesz nadal używać karty bazy danych i, w przypadku funkcji, karty Dzienniki w interfejsie użytkownika Emulator Suite, aby potwierdzić, że zachowanie aplikacji jest prawidłowe.

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

Aby przełączyć się na zapisywanie danych w bazie danych przez aplikację, musisz skierować swoje klasy testowe lub konfigurację w aplikacji na emulator Cloud Firestore.

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

Web modular API

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

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

Web namespaced API

// 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

Teraz ostatni ogólny krok przepływu pracy. Po utworzeniu prototypu funkcji w aplikacji, która wygląda obiecująco na wszystkich platformach, możesz przystąpić do ostatecznej implementacji i testowania. W przypadku testów jednostkowych i przepływów pracy CI można uruchamiać emulatory, uruchamiać testy skryptowe i zamykać emulatory w jednym wywołaniu za pomocą polecenia exec :

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

Poznaj dokładniej poszczególne emulatory

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

Co następne?

Pamiętaj, aby przeczytać tematy związane z określonymi emulatorami, do których linki znajdują się powyżej. Następnie: