Firebase to narzędzie, które umożliwia zarządzanie usługami Firebase i konfigurowanie ich z wiersza poleceń.
Interfejs CLI udostępnia polecenia, których można używać do wykonywania różnych zadań, takich jak tworzenie nowego Data Connectprojektu, inicjowanie odpowiedniego lokalnego katalogu roboczego, konfigurowanie Data Connectemulatora, wyświetlanie listy zasobów Data Connect, generowanie pakietów SDK klienta i nie tylko.Data Connect
Polecenia konfiguracji
Dodawanie aplikacji Data Connect do projektu Firebase
firebase init
Użyj firebase init
, aby skonfigurować nową lokalną konfigurację projektu. Ten proces tworzy lub aktualizuje pliki konfiguracyjne Firebase w Twoim katalogu.
firebase init
Proces firebase init
przeprowadzi Cię przez konfigurowanie usługi i bazy danych, a także opcjonalnie przez instalowanie emulatora Data Connect i konfigurowanie wygenerowanych pakietów SDK.
Konfigurowanie usługi i bazy danych
Jeśli wybierzesz dataconnect
w przypadku konfiguracji usługi, interfejs wiersza poleceń poprosi Cię o podanie nowej nazwy usługi i lokalizacji oraz o to, czy chcesz połączyć istniejącą instancję Cloud SQL for PostgreSQL, czy utworzyć nową.
Jeśli połączona jest istniejąca instancja, interfejs wiersza poleceń sprawdza zgodne ustawienia, takie jak uwierzytelnianie IAM i publiczne adresy IP.
Local Emulator Suite konfiguracja
Proces interfejsu wiersza poleceń umożliwia skonfigurowanie emulatorów, w tym emulatora Data Connect.
Data Connect polecenia emulatora
Uruchom emulator Data Connect
emulators:start/exec
firebase emulators:start/exec
Używaj Local Emulator Suite wersji emulatora Data Connect w trybie interaktywnym z start
lub w trybie nieinteraktywnym opartym na skryptach z exec
.
Eksportowanie i importowanie lokalnych danych PostgreSQL
Aby obsługiwać lokalne prototypowanie i testowanie oraz ciągłą integrację, możesz eksportować dane przechowywane w lokalnej instancji bazy danych i importować je między iteracjami programowania i przebiegami testów.
Eksporty są przechowywane jako zrzuty lokalnej bazy danych PostgreSQL.
Data Connect oferuje 3 metody eksportowania i importowania:
- Automatyczny eksport/import skonfigurowany w
firebase.json
, aby tworzyć kopie zapasowe stanu po wyłączeniu i uruchomieniu emulatora - Ręczny eksport i import za pomocą interfejsu wiersza poleceń
- Ręczny eksport/import za pomocą interfejsu rozszerzenia VS Code
Automatyczne eksportowanie i importowanie skonfigurowane w firebase.json
Aby tworzyć kopie zapasowe danych między sesjami programistycznymi, w trakcie sekwencji firebase init
określ lokalizację automatycznej kopii zapasowej. Ta lokalizacja jest przechowywana w firebase.json
w polu emulators.dataconnect.dataDir
. Wszystkie wprowadzone zmiany danych będą automatycznie zapisywane między uruchomieniami emulatora, co jest przydatne podczas testowania i eksperymentowania lokalnego.
Eksport ręczny: emulators:export
i emulators:start/exec --import
Gdy emulator Data Connect jest uruchomiony, w osobnym terminalu uruchom polecenie firebase emulators:export
, aby zapisać migawkę danych.
Następnie możesz uruchomić emulator z tego stanu, używając flagi --import
.
# Export data from local emulator from a separate terminal
firebase emulators:export --only dataconnect <export_directory>
# Import data from local directory, here using emulators:exec
firebase emulators:exec ./<your-test-script>.sh --only dataconnect --import <import_directory>
Ręczny eksport i import: rozszerzenie VS Code
W interfejsie rozszerzenia VS Code, gdy emulator jest uruchomiony, kliknij przycisk Eksportuj dane emulatora, aby wyeksportować dane z bieżącej bazy danych. Domyślna lokalizacja eksportu to katalog exportedData
w katalogu głównym projektu.
Możesz zaimportować te dane za pomocą interfejsu wiersza poleceń, jak opisano w poprzedniej sekcji. Możesz też zaimportować te dane przed uruchomieniem emulatora w VS Code, klikając link Skonfiguruj emulator i ustawiając Ścieżkę importu.
Polecenia zarządzania schematami i łącznikami
Ta sekcja zawiera informacje o poleceniach interfejsu wiersza poleceń, których używasz do zarządzania schematami i łącznikami.
Przykłady użycia i zalecane praktyki związane z tymi poleceniami znajdziesz w przewodniku po schematach i złączach.
Wdrażanie schematów i łączników
wdróż
firebase deploy
To polecenie wdraża zasoby usług Data Connect indeksowane w pliku firebase.json. W razie potrzeby przeprowadzana jest migracja schematu i aktualizacja łącznika.
Command | Opis | |
---|---|---|
firebase deploy |
Flaga | Opis |
–-only dataconnect |
Wdrażanie schematów i łączników dla wszystkich usług Data Connect w tym projekcie, ale bez wdrażania innych zasobów usług Firebase. | |
–-only dataconnect:serviceId |
Wdrażanie schematu i łączników dla określonej usługi Data Connect. | |
–-only dataconnect:serviceId:connectorId |
Wdrażanie pojedynczego łącznika dla określonej usługi Data Connect. | |
--only dataconnect:serviceId:schema |
Wdróż schemat dla określonej usługi Data Connect. |
Za pomocą flagi –-only
możesz przekazywać wartości rozdzielone przecinkami, aby wdrożyć dowolny podzbiór zasobów.
firebase deploy --only dataconnect:service1:schema,dataconnect:service2
Wyświetlanie listy usług, schematów i złączy Data Connect
dataconnect:services:list
firebase dataconnect:services:list
To polecenie wyświetla podstawowe informacje o usługach, schematach i łącznikach wdrożonych w projekcie.
Porównywanie i migrowanie schematów SQL
Gdy uruchomisz polecenie firebase deploy
, interfejs wiersza poleceń przed wdrożeniem aktualizacji przeprowadzi porównanie schematu SQL. Możesz też przeprowadzić porównanie i zaktualizować dane bezpośrednio za pomocą zestawu poleceń dataconnect:sql
.
dataconnect:sql:diff
firebase dataconnect:sql:diff
To polecenie porównuje lokalny schemat usługi z bieżącym schematem odpowiedniej bazy danych Cloud SQL. Wyświetla polecenia, które zostaną uruchomione, aby przenieść bazę danych do nowego schematu.
Command | Opis | |
---|---|---|
firebase dataconnect:sql:diff |
Flaga/parametr | Opis |
serviceId |
Określ usługę. Jeśli ten argument zostanie pominięty, wyświetli różnice dla wszystkich usług w pliku firebase.json. |
dataconnect:sql:migrate
firebase dataconnect:sql:migrate
To polecenie stosuje lokalne zmiany schematu w bazie danych Cloud SQL usługi.
Gdy skonfigurujesz nowy projekt lokalny Data Connect z domyślnymdataconnect.yaml
plikiem, polecenie dataconnect:sql:migrate
dataconnect.yaml
wyświetli prośbę o wprowadzenie wymaganych zmian, a następnie o wprowadzenie zmian opcjonalnych, zanim zostaną one wykonane. Możesz zmienić to zachowanie, aby zawsze uwzględniać lub ignorować opcjonalne zmiany, aktualizując dataconnect.yaml
konfigurację, zgodnie z opisem w artykule Migrowanie schematu w trybie ścisłym lub zgodności.
W środowiskach interaktywnych interfejs wiersza poleceń wyświetla każde polecenie SQL migracji (i informację o tym, czy jest ono destrukcyjne) oraz prosi o wprowadzenie zmian, które chcesz zastosować.
Przekazanie flagi --force
jest równoznaczne z zaakceptowaniem wszystkich promptów.
W środowiskach nieinteraktywnych:
- Bez
--force
wprowadzane są tylko zmiany nieodwracalne. Jeśli występują zmiany destrukcyjne, interfejs wiersza poleceń przerywa działanie bez wprowadzania zmian. - Po kliknięciu
--force
wszystkie zmiany zostaną wprowadzone. Jeśli obejmują one zmiany destrukcyjne, są one drukowane i wyświetla się pytanie, czy chcesz kontynuować, chyba że podano flagę--force
.
Command | Opis | |
---|---|---|
firebase dataconnect:sql:migrate |
Flaga | Opis |
serviceId |
Przenieś bazę danych dla określonej usługi. Identyfikator serviceId jest wywnioskowany, jeśli projekt ma tylko jedną usługę. | |
–-force |
Automatycznie akceptuj prompty. |
Podobnie jak w przypadku innych oznaczeń --only
możesz podać kilka usług oddzielonych przecinkami.
Migracja schematu w trybie rygorystycznym lub zgodnym
Migracje schematu Data Connect mają 2 tryby weryfikacji schematu: ścisły i zgodny. Weryfikacja w trybie ścisłym wymaga, aby schemat bazy danych dokładnie odpowiadał schematowi aplikacji przed wdrożeniem schematu aplikacji. Weryfikacja trybu zgodności wymaga, aby schemat bazy danych był zgodny ze schematem aplikacji, co oznacza, że elementy w bazie danych, które nie są używane przez schemat aplikacji, pozostają niezmienione.
Te tryby weryfikacji schematu i sprawdzone metody migracji schematu są opisane w przewodniku po zarządzaniu schematami i łącznikami.
Tryb weryfikacji jest zdefiniowany za pomocą klucza schemaValidation
w pliku dataconnect.yaml
. Jeśli parametr schemaValidation
nie jest określony, interfejs CLI stosuje zmiany kompatybilne i przed wprowadzeniem zmian ścisłych wyświetla odpowiedni komunikat. Zobacz informacje o konfiguracji.
Zarządzanie zmianami w przypadku oprogramowania sprzęgającego
Gdy uruchomisz polecenie firebase deploy
, interfejs CLI zainicjuje aktualizację odpowiednich oprogramowań sprzęgających. Interfejs CLI analizuje zmiany w każdym łączniku i wyświetla zestaw komunikatów oceniających zmiany w łącznikach, które mogą powodować nieoczekiwane działanie (komunikaty na poziomie ostrzeżenia) lub błędy (komunikaty na poziomie błędu) w poprzednich wersjach kodu klienta.
Ocena wpływu | Scenariusz |
---|---|
Poziom ostrzegawczy (zgodny z przewodami, może zmienić działanie) |
|
Poziom powodujący przerwy w działaniu (niezgodny z okablowaniem, może powodować przerwy w działaniu klientów) |
|
Zmiana powodująca niezgodność (niezgodność z okablowaniem, spowoduje problemy u klientów) |
|
W środowiskach interaktywnych interfejs CLI wyświetla ocenę każdego złącza i prosi o wprowadzenie zmian, które chcesz zastosować. Przekazanie flagi --force
jest równoznaczne z zaakceptowaniem wszystkich testów.
W środowiskach nieinteraktywnych:
- Jeśli wystąpią tylko oceny na poziomie ostrzeżenia (możliwe zmiany w zachowaniu), wszystkie łączniki zostaną wdrożone, a ostrzeżenia zostaną zarejestrowane w terminalu.
- Jeśli wystąpią jakiekolwiek oceny na poziomie przerwania, żadne łączniki nie zostaną wdrożone, a ostrzeżenia zostaną zarejestrowane w terminalu. Możesz zastąpić to ustawienie za pomocą flagi
--force
.
Sprawdzanie kodu autoryzacji
Data Connect pomaga w audycie strategii autoryzacji przez analizowanie kodu łącznika podczas wdrażania na serwerze za pomocą firebase deploy
z Firebase interfejsu CLI. Możesz użyć tego audytu, aby sprawdzić bazę kodu.
Po wdrożeniu łączników interfejs CLI wyświetli oceny istniejącego, zmodyfikowanego i nowego kodu operacji w łączniku.
W przypadku zmodyfikowanych i nowych operacji interfejs wiersza poleceń wyświetla ostrzeżenia i prosi o potwierdzenie, gdy w nowych operacjach używasz określonych poziomów dostępu lub gdy modyfikujesz istniejące operacje, aby używać tych poziomów dostępu.
Ostrzeżenia i prośby o potwierdzenie zawsze pojawiają się w przypadku:
PUBLIC
Ostrzeżenia i prośby pojawiają się na tych poziomach dostępu, gdy nie rozszerzysz ich za pomocą filtrów z użyciem auth.uid
:
USER
USER_ANON
USER_EMAIL_VERIFIED
Więcej informacji o autoryzacji znajdziesz w przewodniku po autoryzacji i atestach.
Polecenia pakietu SDK
Generowanie pakietów SDK
dataconnect:sdk:generate
firebase dataconnect:sdk:generate
To polecenie generuje pakiety SDK z określonymi typami zadeklarowane w pliku connector.yaml.
Zapoznaj się też z przewodnikami dotyczącymi pracy z pakietami SDK na potrzeby internetu, pakietami SDK na Androida i pakietami SDK na iOS.
Command | Opis | |
---|---|---|
firebase dataconnect:sdk:generate |
Flaga | Opis |
–-watch |
Utrzymuje proces w ruchu i generuje nowe pakiety SDK za każdym razem, gdy zapiszesz zmiany w plikach schematu i łącznika GQL. Jeśli generowanie się nie powiedzie, błędy zostaną wydrukowane w stdout, wygenerowany kod nie zostanie zmieniony, a polecenie będzie nadal działać. |
|
--only connectorId:platform |
Generuj pakiety SDK tylko dla jednej platformy i jednego łącznika. |
Za pomocą flagi –only
możesz przekazywać wartości rozdzielone przecinkami.
firebase dataconnect:sdk:generate –-only connector1, connector1:kotlin
Polecenia zarządzania Cloud SQL
Przyznawanie ról SQL w Cloud SQL
Data Connect działa na Twojej instancji PostgreSQL hostowanej w Cloud SQL. Polecenia ról SQL pomagają zarządzać uprawnieniami do tabel bazy danych.
dataconnect:sql:setup
firebase dataconnect:sql:setup
To polecenie konfiguruje początkowe, globalne uprawnienia do tabel w bazie danych.
Domyślny przepływ pracy związany z udostępnianiem baz danych i zarządzaniem nimi zakłada, że projekt korzysta z nowej bazy danych (greenfield). Gdy wywołasz firebase deploy
,Data Connect wyświetli zmiany schematu bazy danych, które mają zostać wprowadzone, i przeprowadzi migracje po Twojej akceptacji. Jeśli wolisz ten sposób, dataconnect:sql:setup
poprosi Cię o przyznanie uprawnień, w tym superuser
własności schematu.
W przypadku istniejących baz danych (brownfield) możesz mieć własny przepływ pracy do migracji schematów i chcieć zachować własność schematu. Jeśli wolisz ten sposób, odrzuć w odpowiedzi na pytanie, czy Data Connect ma obsługiwać migracje SQL.dataconnect:sql:setup
Jeśli odrzucisz tę prośbę, usługa Data Connect uzyska dostęp do tabel bazy danych tylko w zakresie read
i write
, ale własność schematu i migracje pozostaną Twoją odpowiedzialnością.
Więcej informacji i przykłady zastosowań znajdziesz w artykule Zarządzanie usługami i bazami danych.
dataconnect:sql:grant
firebase dataconnect:sql:grant
W niektórych przypadkach możesz chcieć uzyskać bezpośredni dostęp do bazy danych, aby wysyłać zapytania lub aktualizować dane generowane przez aplikacje Data Connect. Aby to zrobić, musisz przyznać odpowiedniemu użytkownikowi lub kontu usługi jedną z ról zdefiniowanych w tej sekcji.
Szczegółowe informacje o przyznanych rolach znajdziesz w artykule Role użytkowników PostgreSQL.
Rola | Rola SQL | Uprawnienia | Wykorzystanie | Możliwość przyznania |
---|---|---|---|---|
czytelnik | firebasereader_<db_name>_<schema_name> |
Dostęp tylko do odczytu bazy danych. Może wykonywać operacje SELECT na wszystkich tabelach w określonym schemacie. |
Idealne rozwiązanie dla użytkowników lub usług, które wymagają pobierania danych, ale nie ich modyfikowania. | Tak |
zapisujący | firebasewriter_<db_name>_<schema_name> |
Uprawnienia do odczytu i zapisu w bazie danych. Może wykonywać operacje SELECT , INSERT , UPDATE , DELETE i TRUNCATE na wszystkich tabelach w schemacie. |
Odpowiednie dla użytkowników lub usług, które muszą modyfikować dane w bazie danych. | Tak |
właściciel | firebaseowner_<db_name>_<schema_name> |
Właściciel schematu. Ma wszystkie uprawnienia do wszystkich tabel i sekwencji w schemacie. |
Ta rola w połączeniu z rolą roles/cloudsql.client w IAM przyznaje uprawnienia do przeprowadzania migracji w bazie danych. Na przykład podczas dzwonienia pod numer firebase dataconnect:sql:migrate . |
Tak |
administrator | superużytkownik | root | cloudsqlsuperuser |
Wbudowana rola superużytkownika z pełnymi uprawnieniami w bazie danych. Oprócz uprawnień właściciela może tworzyć schematy, usuwać schematy, instalować rozszerzenia i wykonywać inne zadania administracyjne. Dostępne w wierszu poleceń po zalogowaniu się jako „firebasesuperuser”. |
Wymagane do instalowania rozszerzeń, tworzenia początkowego schematu i przyznawania innym użytkownikom dowolnych ról SQL, które można przyznać. Jeśli użytkownik niebędący administratorem potrzebuje uprawnień superużytkownika, migracja zakończy się niepowodzeniem i wyświetli się prośba o skontaktowanie się z administratorem bazy danych (czyli użytkownikiem z uprawnieniami roles/cloudsql.admin ) w celu uruchomienia uprzywilejowanych poleceń SQL. |
Przyznawane użytkownikom z roles/cloudsql.admin i nie można ich przyznawać bezpośrednio z interfejsu Firebase CLI. |
Command | Opis | |
---|---|---|
firebase dataconnect:sql:grant |
Flaga/parametr | Opis |
-R, --role role |
Rola SQL do przyznania: właściciel, zapisujący lub odczytujący. | |
-E, --email email_address |
Adres e-mail użytkownika lub konta usługi, któremu chcesz przyznać rolę. |
Opcje globalne
Te opcje globalne mają zastosowanie do wszystkich poleceń:
--json
przełącza dane wyjściowe interfejsu CLI na format JSON, aby można je było analizować w innych narzędziach.--noninteractive
i--interactive
w razie potrzeby zastępują automatyczne wykrywanie środowisk innych niż TTY.