Firebase CLI 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 Data Connectzasobów, 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 initProces firebase init przeprowadzi Cię przez konfigurowanie usługi i bazy danych oraz opcjonalne 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/execUżyj Local Emulator Suite wersji Data Connect emulatora w trybie interaktywnym z start lub w trybie nieinteraktywnym sterowanym skryptem 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 przy użyciu 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 programowania, w trakcie sekwencji firebase init określ lokalizację automatycznej kopii zapasowej. Ta lokalizacja jest przechowywana w firebase.json w polu emulators.dataconnect.dataDir. Wszelkie zmiany danych, które wprowadzisz, 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/import: rozszerzenie VS Code
W interfejsie rozszerzenia VS Code, gdy emulator jest uruchomiony, kliknij przycisk Eksportuj dane emulatora, aby wyeksportować bieżącą zawartość 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 deployTo 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 |
Wdróż pojedyncze oprogramowanie sprzęgające 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:service2Wyświetlanie listy usług, schematów i złączy Data Connect
dataconnect:services:list
firebase dataconnect:services:listTo 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:diffTo 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:migrateTo polecenie stosuje lokalne zmiany schematu w bazie danych Cloud SQL usługi.
Gdy skonfigurujesz nowy projekt lokalny Data Connect z domyślnym plikiem dataconnect.yaml, polecenie dataconnect:sql:migrate 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.yamlkonfigurację, 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
--forcewprowadzane są tylko zmiany nieodwracalne. Jeśli występują zmiany destrukcyjne, interfejs wiersza poleceń przerywa działanie bez wprowadzania zmian. - Po kliknięciu
--forcewszystkie 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. Jeśli Twój projekt ma tylko jedną usługę, identyfikator serviceId jest wywnioskowany. | |
–-force |
automatycznie akceptować prompty; | |
Podobnie jak w przypadku innych oznaczeń --only możesz podać kilka usług oddzielonych przecinkami.
Migracja schematu w trybie rygorystycznym lub zgodności
Migracje schematuData Connect mają 2 tryby weryfikacji schematu: ścisły i zgodny. Weryfikacja w trybie ścisłym wymaga, aby schemat bazy danych dokładnie pasował do schematu 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 zostały omówione w przewodniku po zarządzaniu schematami i łącznikami.
Tryb weryfikacji jest definiowany 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 na poziomie powodującym błędy (niezgodne z okablowaniem, spowoduje błędy u klientów) |
|
W środowiskach interaktywnych interfejs CLI wyświetla ocenę każdego złącza i prosi o podanie 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 powodującym przerwanie działania, ż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 sprawdzaniu 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.
Podczas wdrażania łączników interfejs CLI będzie wyświetlać 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 komunikaty pojawiają się na tych poziomach dostępu, gdy nie rozszerzysz ich za pomocą filtrów z użyciem auth.uid:
USERUSER_ANONUSER_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:generateTo polecenie generuje pakiety SDK z określonym typem 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ą flag –only możesz przekazywać wartości rozdzielone przecinkami.
firebase dataconnect:sdk:generate –-only connector1, connector1:kotlinPolecenia 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:setupTo 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:grantW 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 do 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 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 bez uprawnień administracyjnych potrzebuje uprawnień superużytkownika, migracja zakończy się niepowodzeniem i wyświetli się prośba o uruchomienie uprzywilejowanych poleceń SQL przez administratora bazy danych (czyli użytkownika z uprawnieniami roles/cloudsql.admin). |
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 przypisać rolę. | |
Opcje globalne
Te opcje globalne mają zastosowanie do wszystkich poleceń:
--jsonprzełącza dane wyjściowe interfejsu CLI na format JSON, aby można je było analizować w innych narzędziach.--noninteractivei--interactivew razie potrzeby zastępują automatyczne wykrywanie środowisk innych niż TTY.