Połącz swoją aplikację i rozpocznij prototypowanie

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

Prototyp i test

Pakiet emulatorów lokalnych zawiera kilka emulatorów produktów, zgodnie z opisem we wstępie do pakietu emulatorów lokalnych Firebase . Możesz tworzyć prototypy i testować poszczególne emulatory, a także kombinacje emulatorów według własnego uznania, w zależności od produktów Firebase, których używasz w produkcji.

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

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

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

  1. Prototyp 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.

Lokalnie zainicjuj 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 chmury i inne pliki pomocnicze.

Prototyp 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 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 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.

Wszystko to jest dostępne po uruchomieniu pakietu Local Emulator Suite za pomocą:

firebase emulators:start

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

  1. Utwórz funkcję chmury uruchamianą przez zapis do 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 węzłach w hierarchii messages , konwertuje zawartość original właściwości węzła na wielkie litery i zapisuje wynik we właściwości uppercase liter tego węzła.
  2.   const functions = require('firebase-functions');
    
      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. Uruchom pakiet emulatorów lokalnych za pomocą firebase emulators:start . Uruchamiają się funkcje Cloud Functions i emulatory baz 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 wysyłane przez interfejs CLI Firebase. Zanotuj stan dostępnych emulatorów. W naszym przypadku będą uruchomione emulatory Cloud Functions i Realtime Database.
    Mój obraz
  5. W interfejsie użytkownika na karcie Baza danych czasu rzeczywistego użyj elementów sterujących edytora zawartości bazy danych, aby utworzyć zestaw węzłów z węzłem messages zawierającym węzeł message1 , który z kolei zawiera węzeł z kluczem ustawionym na original i wartością ustawioną na test . To uruchamia naszą funkcję chmury. Zwróć uwagę, że wkrótce pojawi się nowa właściwość uppercase o wartości TEST .
    Mój obrazMój obraz
  6. Sprawdź kartę Dzienniki , aby upewnić się, że funkcja nie uruchomiła żadnych błędów podczas aktualizacji bazy danych.

Możesz łatwo przełączać się między kodem funkcji chmury a interaktywnymi edycjami bazy danych, aż uzyskasz oczekiwany przepływ danych, bez konieczności dotykania kodu dostępu do bazy danych w aplikacji, ponownej kompilacji i ponownego uruchamiania zestawów testów.

Połącz swoją aplikację z emulatorami

Kiedy poczynisz znaczne postępy w interaktywnym prototypowaniu i zdecydujesz się na projekt, będziesz gotowy, aby dodać kod dostępu do bazy danych do swojej aplikacji przy użyciu odpowiedniego zestawu SDK. Będziesz nadal korzystać z karty bazy danych i, w przypadku funkcji, karty Dzienniki w interfejsie użytkownika pakietu Emulator Suite, aby potwierdzić, że zachowanie aplikacji jest prawidłowe.

Pamiętaj, że pakiet lokalnego emulatora jest narzędziem do lokalnego programowania. Zapisy do produkcyjnych baz danych nie będą wyzwalać funkcji, które prototypujesz lokalnie.

Aby przełączyć się na zapisywanie aplikacji w bazie danych, musisz skierować swoje klasy testowe lub konfigurację w aplikacji na emulator bazy danych czasu rzeczywistego.

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 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);
Szybki
    // 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 modular API

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 namespaced API

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

Zautomatyzuj swoje testy za pomocą niestandardowych skryptów

Teraz ostatni ogólny etap przepływu pracy. Gdy już stworzysz prototyp funkcji w aplikacji i będzie ona 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żesz uruchamiać emulatory, uruchamiać testy skryptowe i zamykać emulatory w jednym wywołaniu za pomocą polecenia exec :

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

Poznaj bardziej szczegółowo poszczególne emulatory

Teraz, gdy już wiesz, jak wygląda podstawowy przepływ pracy po stronie klienta, możesz przejść do szczegółów dotyczących poszczególnych emulatorów w pakiecie, w tym sposobu ich używania do tworzenia aplikacji po stronie serwera:

Co następne?

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