Rozszerzenie Firestore Bundle Builder (firestore-bundle-builder
) wdraża funkcję HTTP, która obsługuje pakiety danych Cloud Firestore. Pakiety definiujesz w dokumentach Firestore, a rozszerzenie udostępnia statyczne pakiety danych w formacie binarnym za pomocą żądań HTTP wraz z różnymi wbudowanymi mechanizmami buforowania przy użyciu sieci CDN Hostingu Firebase lub Cloud Storage. Jeśli nie ma pakietu lub istniejące pakiety wygasły, ta funkcja utworzy i zapisze w pamięci podręcznej nowy pakiet na żądanie.
Aby korzystać z tego rozszerzenia, musisz najpierw utworzyć w Firestore co najmniej 1 specyfikację pakietu za pomocą panelu administracyjnego rozszerzenia. Specyfikacja pakietu to sposób definiowania nazwanych zapytań (zapytań dotyczących kolekcji i określonych ścieżek dokumentów, które mają zostać dodane 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.
Link powyżej zawiera instrukcje, które pomogą Ci uruchomić narzędzia administracyjne lokalnie. Po skonfigurowaniu aplikacji internetowej otwórz adres localhost:3000, aby utworzyć specyfikację za pomocą interfejsu:
Tworzenie i wyświetlanie pakietu
Po zainstalowaniu rozszerzenia i utworzeniu specyfikacji pakietu możesz zacząć tworzyć i wyświetlać pakiety, wywołując punkt końcowy HTTP udostępniony 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 pamięci podręczne wygasną, nowe żądanie wyświetlenia spowoduje wysłanie zapytań do Firestore w celu utworzenia pakietu na żądanie.
Możesz skorzystać z możliwości sieci CDN Hostingu Firebase, konfigurując witrynę w Hostingu Firebase, która za pomocą reguły przepisywania wskazuje funkcję obsługi. Sieci CDN replikują pakiet na wielu różnych serwerach, dzięki czemu użytkownicy mogą automatycznie wczytywać go z najbliższego serwera. Jest to preferowane podejście.
Aby skonfigurować to w Hostingu Firebase, utwórz lub zmień plik firebase.json
z podaną niżej treścią i wdroż witrynę:
{
"hosting": {
"ignore": ["firebase.json", "**/.*", "**/node_modules/**"],
"rewrites": [
{
"source": "/bundles/*",
"function": "ext-firestore-bundle-builder-serve"
}
]
}
}
Po wdrożeniu możesz uzyskać dostęp do pakietów z CDN za pomocą adresu URL witryny. Przykład: https://your-site-url.com/bundles/:bundleId
.
Jeśli nie chcesz używać Hostingu Firebase, możesz skonfigurować rozszerzenie tak, aby buforowało dane w Cloud Storage. W takim przypadku wywołasz wdrożoną funkcję HTTP bezpośrednio, aby wygenerować pakiety.
Integracja klienta
Następnie możesz użyć pakietu za pomocą interfejsu loadBundle
pakietów SDK Cloud Firestore. Najpierw należy 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 wczytaniu możesz użyć danych z pakietu:
Jeśli podczas definiowania pakietu określono tablicę ścieżek do dokumentów, możesz pobrać dane dokumentu na klienta 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ślono zapytania, możesz użyć interfejsu namedQuery
API, 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).