Join us for Firebase Summit on November 10, 2021. Tune in to learn how Firebase can help you accelerate app development, release with confidence, and scale with ease. Register

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 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 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órzmy i wypełnijmy 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 możliwość wykonywania 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: