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

Przed skok z Firebase Lokalnej Emulator Suite, upewnij się, że stworzyliśmy projekt Firebase, skonfigurować środowisko programistyczne, a wybrany i zainstalowany Firebase SDK dla platformy według zacząć z tematów Firebase dla danej platformy: iOS , Android lub Web .

Prototyp i test

Lokalny Emulator Suite zawiera kilka emulatorów produktów, jak opisano w Wprowadzenie do Firebase Lokalnej Emulator Suite . 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 Firebase dstabase a emulatorami funkcji
Baz danych i funkcji Chmura emulatory jako część pełnego Lokalnej Emulator Suite .

W tym temacie, aby przedstawić przepływ pracy lokalnego pakietu emulatorów, załóżmy, że pracujesz nad aplikacją, która korzysta z 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 instalacja CLI lub aktualizacji do najnowszej wersji .

curl -sL firebase.tools | bash

Jeśli jeszcze tego nie uczyniły, zainicjować bieżący katalog roboczy projektu Firebase, postępując zgodnie z instrukcjami wyświetlanymi na ekranie, aby określić używasz funkcji Chmura i albo Chmura FireStore lub bazy danych w czasie rzeczywistym:

firebase init

Twój katalog projektu będzie teraz zawierać pliki Firebase konfiguracyjne, plik definicji Firebase przepisów bezpieczeństwa dotyczących bazy danych, a functions zawierający katalog cloud kod funkcji 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órz i wypełnij tę bazę danych w interfejsie użytkownika pakietu emulatorów, aby ją uruchomić.

  1. Tworzenie funkcji cloud wyzwalany przez zapisów baz danych poprzez edycję functions/index.js plik w katalogu projektu. Zastąp zawartość istniejącego pliku następującym fragmentem. Funkcja ta wykrywa zmian do dokumentów w messages kolekcji, konwertuje zawartość dokumentu original pola na wielkie litery i zapisuje wynik w tym dokumencie za uppercase dziedzinie.
  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. Uruchomić lokalny Emulator Suite z firebase emulators:start . Uruchomią się funkcje Cloud Functions i emulatory bazy danych, automatycznie skonfigurowane do współpracy.
  4. Zobacz UI w przeglądarce na 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, na karcie podrzędnej danych, kliknij kolekcję Start i postępuj zgodnie z instrukcjami, aby utworzyć nowy dokument w messages kolekcji, z pola stare_pole original i wartości test . To uruchamia naszą funkcję chmury. Zauważmy, że nowy uppercase pole pojawia się na krótko, wypełniona napisu „test”.
    Mój obrazMój obraz
  6. Na FireStore> kartę kupna, bada wnioski do emulowane bazy danych, w tym wszystkich ocen Firebase zasad bezpieczeństwa wykonywane w ramach spełnienia tych żądań.
  7. Sprawdź kartę Logs, aby potwierdzić swoją funkcję nie napotkasz błędy jak aktualizacje 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 zakładki bazy danych, a dla funkcji, zakładka Dzienniki Emulator Suite UI, aby potwierdzić, że zachowanie Twojej aplikacji jest poprawna.

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

Wersja internetowa 9

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

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

Wersja internetowa 8

// Firebase previously initialized using firebase.initializeApp().
var db = firebase.firestore();
if (location.hostname === "localhost") {
  db.useEmulator("localhost", 8080);
}
Sieć
// Initialize your Web app as described in the Get started for Web
// 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. Dla testów jednostkowych i CI przepływy pracy, można uruchomić emulatory uruchomić skryptów testów i zamknąć emulatory w jednej rozmowy z exec polecenie:

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: