Rozszerzenie Firestore Bundle Builder (firestore-bundle-builder
) wdraża funkcję HTTP, która udostępnia pakiety danych Cloud Firestore. Pakiety definiujesz w dokumentach Firestore, a rozszerzenie udostępnia pakiet danych statycznych plików binarnych za pomocą żądań HTTP oraz różnych wbudowanych mechanizmów buforowania za pomocą CDN Firebase Hosting lub Cloud Storage. Jeśli nie ma żadnego pakietu lub istniejące pakiety wygasły, ta funkcja utworzy nowy pakiet i zapisze go w pamięci podręcznej na żądanie.
Aby korzystać z tego rozszerzenia, musisz najpierw utworzyć co najmniej 1 specyfikację pakietu w Firestore, korzystając z panelu administracyjnego rozszerzenia. Specyfikacja pakietu służy do definiowania zapytań nazwanych (zapytań kolekcji i specyficznych ścieżek dokumentów do dodania do pakietu).
W specyfikacji pakietu możesz też zdefiniować parametry przeznaczone do użycia w zapytaniach nazwanych. Wartości tych parametrów ustawiasz za pomocą parametrów zapytania URL podczas wywoływania funkcji HTTP.
Po kliknięciu tego linku zobaczysz instrukcje uruchamiania narzędzi administracyjnych lokalnie. Po skonfigurowaniu aplikacji internetowej otwórz adres localhost:3000, aby utworzyć specyfikację za pomocą interfejsu:
Kompilowanie i obsługa pakietu
Po zainstalowaniu rozszerzenia i utworzeniu specyfikacji pakietu możesz zacząć tworzyć i wyświetlać pakiety, wywołując punkt końcowy HTTP udostępniany przez rozszerzenie.
W zależności od specyfikacji pakietu żądany pakiet może zostać zwrócony z pamięci podręcznej klienta, pamięci podręcznej Firebase Hosting lub pliku Cloud Storage. Gdy wszystkie bufory wygasną, nowe żądanie wyświetlenia spowoduje wywołanie zapytań Firestore w celu utworzenia pakietu na żądanie.
Aby korzystać z możliwości CDN Hostingu Firebase, skonfiguruj witrynę Hostingu Firebase, która wskazuje na funkcję serwowania za pomocą reguły przepisywania. Usługi CDN powielają pakiet na wielu różnych serwerach, aby użytkownicy mogli automatycznie wczytywać go z najbliższego serwera. Jest to preferowane podejście.
Aby skonfigurować to w Hostingu Firebase, utwórz lub zmodyfikuj plik firebase.json
z podaną niżej treścią i wdróż stronę:
{
"hosting": {
"ignore": ["firebase.json", "**/.*", "**/node_modules/**"],
"rewrites": [
{
"source": "/bundles/*",
"function": "ext-firestore-bundle-builder-serve"
}
]
}
}
Po wdrożeniu możesz uzyskać dostęp do swoich pakietów z CDN za pomocą adresu URL witryny. Na przykład: https://your-site-url.com/bundles/:bundleId
.
Jeśli nie chcesz korzystać z Hostingu Firebase, możesz skonfigurować rozszerzenie tak, aby przechowywało dane w Cloud Storage w pamięci podręcznej. W takim przypadku wywołujesz bezpośrednio wdrożone funkcje HTTP, aby wygenerować pakiety.
Integracja z klientem
Następnie możesz użyć pakietu z interfejsem API loadBundle
pakietów SDK Cloud Firestore. Najpierw trzeba pobrać pakiet, a potem przekazać go do pakietu SDK. Przykład:
import { loadBundle } from "firebase/firestore";
// Download the bundle from the Firebase Hosting CDN:
const bundle = await fetch("/bundles/:bundleId");
// If not using a CDN, download the bundle directly:
// const bundle = await fetch('https://<location>-<project-id>.cloudfunctions.net/ext-firestore-bundle-builder-serve/:bundleId');
await loadBundle(bundle);
Po załadowaniu możesz używać danych z pakietu:
Jeśli podczas definiowania pakietu podano tablicę ścieżek dokumentów, dane dokumentów można pobrać na kliencie za pomocą pakietu:
import { getFirestore, doc, getDocFromCache } from "firebase/firestore";
// Bundle Document IDs: ['users/92x1NgSWYKUC4AG4s2nHGMR2ikZ2']
const ref = doc(getFirestore(), "users/92x1NgSWYKUC4AG4s2nHGMR2ikZ2");
const snapshot = await getDocFromCache(ref);
Jeśli określisz zapytania, możesz użyć interfejsu API namedQuery
, aby uruchomić zapytanie z pakietu:
import { getFirestore, namedQuery } from "firebase/firestore";
const query = await namedQuery(getFirestore(), "queryId");
const snapshot = await getDocsFromCache(query);
Identyfikatory zapytań są zdefiniowane jako klucz każdej definicji właściwości queries
(patrz poniżej).