Połącz aplikację z emulatorem bazy danych czasu rzeczywistego

Zanim połączysz aplikację z emulatorem Realtime Database, sprawdź, czy poznasz ogólny przepływ pracy w Firebase Local Emulator Suite, oraz musisz zainstalować i skonfigurować Local Emulator Suite i zapoznaj się z poleceniami interfejsu wiersza poleceń.

Wybierz projekt Firebase

Funkcja Firebase Local Emulator Suite emuluje produkty z jednego projektu Firebase.

Aby wybrać projekt do użycia, przed uruchomieniem emulatorów uruchom interfejs wiersza poleceń firebase use w katalogu roboczym. Możesz też przejść flagę --project poszczególnych emulatorów .

Local Emulator Suite obsługuje emulację prawdziwych projektów Firebase oraz projektów demograficznych.

Typ projektu Funkcje Używanie z emulatorami
Prawdziwe

Prawdziwy projekt Firebase to projekt utworzony i skonfigurowany przez Ciebie (najprawdopodobniej za pomocą konsoli Firebase).

Prawdziwe projekty mają aktywne zasoby, takie jak instancje baz danych, miejsce na dane zasobników, funkcji lub innych zasobów utworzonych dla danej usługi Firebase w projektach AI.

Podczas pracy z prawdziwymi projektami Firebase możesz używać emulatorów dla lub wszystkich obsługiwanych usług.

W przypadku usług, których nie emulujesz, aplikacje i kod będą interakcja z zasobem aktywnym (instancją bazy danych, pamięcią masową) zasobnik, funkcja itp.).

Wersja demonstracyjna

Projekt demonstracyjny Firebase nie ma rzeczywistej konfiguracji Firebase oraz brak aktywnych zasobów. Dostęp do tych projektów uzyskuje się zazwyczaj w ramach ćwiczeń z programowania lub innych samouczków.

Identyfikatory projektów demonstracyjnych mają prefiks demo-.

Podczas pracy z projektami demonstracyjnymi Firebase Twoje aplikacje i kod współdziałają tylko emulatory. Jeśli aplikacja próbuje wchodzić w interakcję z zasobem w przypadku których emulator nie jest uruchomiony, kod ten zakończy się niepowodzeniem.

Zalecamy, aby w miarę możliwości korzystać z projektów demonstracyjnych. W ten sposób możesz zapewnić im dostęp do tych korzyści:

  • Łatwiejsza konfiguracja, ponieważ emulatory można uruchamiać bez konieczności tworzenia Projekt Firebase
  • Silniejsze bezpieczeństwo, ponieważ jeśli Twój kod przypadkowo wywoła nieemulowany (produkcyjnych), nie jest prawdopodobne, że nastąpi zmiana danych, jego użycia i rozliczeń
  • lepsza obsługa offline, ponieważ nie trzeba łączyć się z internetem, pobierz konfigurację pakietu SDK.
.

Dostosuj aplikację do emulatorów

Platformy Android, Apple i internetowe pakiety SDK

Skonfiguruj konfigurację w aplikacji lub sprawdź zajęcia, aby korzystać z Realtime Database w następujący sposób.

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);
} 

Aby przetestować funkcje w Cloud Functions aktywowane przez zdarzenia Bazy danych czasu rzeczywistego, nie jest wymagana dodatkowa konfiguracja za pomocą emulatora. Gdy emulatory Bazy danych czasu rzeczywistego i Cloud Functions są współdziałają ze sobą automatycznie.

Admin SDK s

Urządzenia Firebase Admin SDK automatycznie łączą się z emulatorem Realtime Database, gdy: zmienna środowiskowa FIREBASE_DATABASE_EMULATOR_HOST jest ustawiona:

export FIREBASE_DATABASE_EMULATOR_HOST="127.0.0.1:9000"

Jeśli Twój kod działa w ramach emulatora Cloud Functions, identyfikator projektu , a także inne ustawienia, zostaną automatycznie ustawione podczas wywoływania usługi initializeApp.

Jeśli chcesz, aby kod Admin SDK łączył się ze współdzielonym emulatorem działającym w w innym środowisku, musisz podać ten sam identyfikator projektu, który ustawiasz za pomocą interfejsu wiersza poleceń Firebase. Możesz przekazać identyfikator projektu bezpośrednio do initializeApp lub ustawić Zmienna środowiskowa GCLOUD_PROJECT.

Pakiet SDK administratora Node.js
admin.initializeApp({ projectId: "your-project-id" });
Zmienna środowiskowa
export GCLOUD_PROJECT="your-project-id"

Czyszczenie bazy danych między testami

Aby wyczyścić Realtime Database między działaniami, możesz wyczyścić odniesienie do bazy danych. Możesz użyć tej metody jako alternatywy dla zamknięcia procesu emulatora.

Kotlin+KTX
// With a DatabaseReference, write null to clear the database.
database.reference.setValue(null)
Java
// With a DatabaseReference, write null to clear the database.
database.getReference().setValue(null);
Swift
// With a DatabaseReference, write nil to clear the database.
    Database.database().reference().setValue(nil);

Web

import { getDatabase, ref, set } from "firebase/database";

// With a database Reference, write null to clear the database.
const db = getDatabase();
set(ref(db), null);

Web

// With a database Reference, write null to clear the database.
firebase.database().ref().set(null);

Kod powinien oczywiście czekać na potwierdzenie zakończenia lub niepowodzenia czyszczenia przy użyciu funkcji asynchronicznego obsługi zdarzeń na platformie.

Po zaimplementowaniu takiego kroku możesz utworzyć sekwencję testów i aktywować funkcje, mając pewność, że stare dane zostaną trwale usunięte między uruchomieniami i będziesz korzystać z nowej konfiguracji podstawowej.

Importowanie i eksportowanie danych

Baza danych i emulatory usługi Cloud Storage for Firebase umożliwiają eksportowanie danych z działającej instancji emulatora. Zdefiniuj bazowy zbiór danych do użycia testów jednostkowych lub przepływów pracy w trybie ciągłej integracji, a następnie je wyeksportować, aby je udostępnić. w zespole.

firebase emulators:export ./dir

Podczas uruchamiania emulatora zaimportuj dane podstawowe podczas testów.

firebase emulators:start --import=./dir

Możesz polecić emulatorowi eksportowanie danych po wyłączeniu, określając eksportu lub po prostu za pomocą ścieżki przekazywanej do funkcji --import flaga.

firebase emulators:start --import=./dir --export-on-exit

Te opcje importu i eksportu danych działają z firebase emulators:exec. Więcej informacji: dokumentacja polecenia emulatora.

Wizualizacja aktywności związanej z regułami zabezpieczeń

Przy opracowaniu prototypu i pętli testowych możesz korzystać z narzędzi do wizualizacji. i raporty dostarczane przez Local Emulator Suite.

Wizualizacja ocen reguł

Dodając reguły zabezpieczeń do prototypu, możesz je debugować Narzędzia Local Emulator Suite.

Po przeprowadzeniu zestawu testów możesz uzyskać dostęp do raportów o zasięgu testów, które pokazują jak zostały ocenione poszczególne reguły. Aby otrzymywać te raporty, wyślij zapytanie do grupy w punkcie końcowym w emulatorze, gdy jest uruchomiony. W wersji dla przeglądarek użyj tego adresu URL:

http://localhost:9000/.inspect/coverage?ns=<database_name>

Reguły są dzielone na wyrażenia i podwyrażenia, najechanie kursorem myszy, aby uzyskać więcej informacji, w tym liczbę uruchomień i wartości . W przypadku nieprzetworzonej wersji JSON tych danych umieść w zapytanie:

http://localhost:9000/.inspect/coverage.json?ns=<database_name>

Co dalej?