Połącz aplikację i rozpocznij prototyp

.


Zanim zaczniesz korzystać z Firebase Local Emulator Suite, upewnij się, że masz utworzone projekt Firebase, skonfiguruj środowisko programistyczne i wybierz zainstalowane pakiety SDK Firebase dla Twojej platformy zgodnie z instrukcjami dla początkujących tematy Firebase dla Twojej platformy: Apple, Android lub internet.

Prototypowanie i testowanie

Local Emulator Suite zawiera kilka emulatorów produktów, zgodnie z opisem w tym artykule: Wprowadzenie do Firebase Local Emulator Suite. Możesz prototypować i testować za pomocą poszczególnych emulatorów oraz kombinacji emulatory, które według Ciebie odpowiadają usługom Firebase, których używasz. w produkcji.

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

Aby przedstawić przepływ pracy w usłudze Local Emulator Suite, załóżmy, że: pracujesz nad aplikacją, która korzysta z typowej kombinacji produktów: Firebase i funkcje w Cloud Functions aktywowane przez operacje na tej bazie danych.

Po lokalnym zainicjowaniu projektu Firebase cykl programowania za pomocą Local Emulator Suite zwykle składa się z 3 kroków:

  1. Prototypowe funkcje są interaktywne dzięki emulatorom i Emulator Suite UI.

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

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

Inicjowanie projektu Firebase lokalnie

Pamiętaj, aby zainstalować interfejs wiersza poleceń lub zaktualizować ją do najnowszej wersji.

curl -sL firebase.tools | bash

Zainicjuj bieżący katalog roboczy jako projektu Firebase, postępując zgodnie z instrukcjami na ekranie, aby określić, że korzystasz z usługi. Cloud Functions i Cloud Firestore lub Realtime Database:

firebase init

Katalog projektu będzie teraz zawierać pliki konfiguracji Firebase, Plik definicji Firebase Security Rules dla bazy danych, katalog functions który zawiera kod Cloud Functions i inne pliki pomocnicze.

Interaktywne prototypowanie

Local Emulator Suite umożliwia szybkie tworzenie prototypów nowych funkcji, a wbudowany w pakiet Analytics to jeden z najbardziej przydatnych prototypów narzędzi. Działa to trochę tak, jakby konsola Firebase działała lokalnie.

Za pomocą Emulator Suite UI można iterować projekt bazy danych, różne przepływy danych obejmujące funkcje w Cloud Functions, oceniać zmiany reguł zabezpieczeń sprawdzać logi, aby potwierdzić wydajność usług backendu itd. Następnie: aby zacząć od początku, wyczyść bazę danych i zacznij od nowa z nowym pomysłem na projekt.

Wszystkie te funkcje są dostępne po uruchomieniu Local Emulator Suite z:

firebase emulators:start

Aby stworzyć prototyp naszej hipotetycznej aplikacji, skonfigurujmy i przetestujmy podstawową funkcję w Cloud Functions. modyfikowanie wpisów tekstowych w bazie danych oraz tworzenie i zapełnianie tej bazy danych w Emulator Suite UI, aby go aktywować.

  1. Utwórz funkcję w Cloud Functions aktywowaną przez zapisy w bazie danych, edytując functions/index.js w katalogu projektu. Zastąp w istniejącym pliku, używając poniższego fragmentu. Ta funkcja nasłuchuje zmian w węzłach w hierarchii messages, konwertuje zawartość właściwości original węzła na wielkimi literami, a wynik jest zapisany w nagłówku uppercase tego węzła. usłudze.
  2.   const functions = require('firebase-functions/v1');
    
      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 Local Emulator Suite za pomocą firebase emulators:start Cloud Functions i baza danych po uruchomieniu są automatycznie skonfigurowane do współpracy.
  4. Wyświetl interfejs w przeglądarce na stronie http://localhost:4000. Port 4000 jest domyślnym portem dla interfejsu użytkownika, ale sprawdź wyjście komunikatów terminala przez interfejsu wiersza poleceń Firebase. Zwróć uwagę na stan dostępnych emulatorów. W naszym przypadku uruchomione zostaną emulatory Cloud Functions i Realtime Database.
    . Moje zdjęcie .
  5. W interfejsie na karcie Baza danych czasu rzeczywistego użyj zawartości bazy danych. elementy sterujące edytora do tworzenia zbioru węzłów z węzłem messages zawierający węzeł message1, z kolei zawierający węzeł o ustawiono na original, a wartość ustawioną na test. Ten uruchamia naszą funkcję w Cloud Functions. Zauważ, że nowe uppercase właściwość jest wyświetlana wkrótce z wartością TEST.
    Moje zdjęcie Moje zdjęcie.
  6. Sprawdź kartę Logi, aby sprawdzić, czy funkcja nie uruchomiła błędów inot podczas aktualizowania bazy danych.

Możesz łatwo powtarzać kod funkcji w Cloud Functions za pomocą funkcji interaktywnych zmian w bazie danych, aż do uzyskania odpowiedniego przepływu danych, bez naruszania kodu dostępu do bazy danych w aplikacji, ponowne kompilowanie i ponowne uruchamianie zestawów testowych.

Łączenie aplikacji z emulatorami

Jeśli wykonasz dobre postępy w tworzeniu interaktywnych prototypów i zdecydujesz się projektu, możesz dodać do swojej aplikacji kod dostępu do bazy danych za pomocą dla odpowiedniego pakietu SDK. W dalszym ciągu będziesz korzystać z karty Baza danych, a w przypadku funkcji Karta Dzienniki w Emulator Suite UI, aby potwierdzić działanie aplikacji jest poprawne.

Pamiętaj, że Local Emulator Suite jest narzędziem dla programistów lokalnych. Zapisy do produkcyjnych baz danych nie będą aktywować funkcji, które są prototypowane lokalnie.

Aby przejść na zapisywanie przez aplikację zapisów w bazie danych, potrzebujesz , aby wskazać zajęcia testowe lub konfigurację w aplikacji do emulatora Realtime Database.

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);
Swift
    // 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

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

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

Automatyzowanie testów za pomocą skryptów niestandardowych

A teraz ostatni krok ogólnego przepływu pracy. Po utworzeniu prototypu funkcji i wygląda obiecująco na wszystkich platformach, wdrażaniem i testowaniem. W przypadku testów jednostkowych i przepływów pracy CI możesz uruchomić używać emulatorów do uruchamiania testów skryptów i wyłączania emulatorów w ramach pojedynczej rozmowy przy użyciu polecenie exec:

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

Więcej informacji na temat poszczególnych emulatorów

Wiesz już, jak wygląda podstawowy przepływ pracy po stronie klienta. przejdź do szczegółów poszczególnych emulatorów w pakiecie Analytics, w tym aby używać ich do tworzenia aplikacji po stronie serwera:

Co dalej?

Zapoznaj się z tematami związanymi z konkretnymi emulatorami, do których linki znajdziesz powyżej. Następnie: