שימוש בתוסף Firestore Bundle Builder

התוסף Firestore Bundle Builder ( firestore-bundle-builder ) פורס פונקציית HTTP המשרתת חבילות נתונים של Cloud Firestore . אתה מגדיר את החבילות במסמכי Firestore, והתוסף מגיש חבילת נתונים סטטית של קבצים בינאריים באמצעות בקשות HTTP, יחד עם מנגנוני מטמון שונים המובנים באמצעות Firebase Hosting CDN או Cloud Storage. כאשר לא קיים חבילה או פג תוקפם של חבילות קיימות, פונקציה זו תבנה ותשמור חבילה חדשה לפי דרישה.

כדי להשתמש בתוסף זה, עליך ליצור תחילה מפרט חבילה אחד או יותר ב-Firestore באמצעות לוח המחוונים לניהול התוסף. מפרט החבילה הוא האופן שבו אתה מגדיר שאילתות בעלות שם (שאילתות איסוף ונתיבי מסמכים ספציפיים להוספה לחבילה).

בתוך מפרט החבילה, אתה יכול גם להגדיר פרמטרים המיועדים לשימוש בשאילתות עם שם. אתה מגדיר ערכים עבור פרמטרים אלה באמצעות פרמטרים של שאילתת URL כאשר אתה קורא לפונקציית HTTP.

הקישור שלמעלה מספק כמה הוראות כדי שתוכל להפעיל את כלי השירות לניהול באופן מקומי. לאחר שתגדיר את אפליקציית האינטרנט, נווט אל localhost:3000 כדי ליצור מפרט באמצעות ממשק המשתמש:

דוגמא

בנייה והגשה של הצרור

לאחר שהתקנת את התוסף ויצרת מפרט חבילה, תוכל להתחיל לבנות ולהגיש חבילות על ידי קריאה לנקודת הקצה של ה-HTTP שמספקת התוסף.

בהתאם למפרט החבילה, החבילה המבוקשת עשויה להיות מוחזרת מהמטמון של הלקוח, מהמטמון של Firebase Hosting או מקובץ Cloud Storage. כאשר כל המטמונים פג, בקשת הגשה חדשה תפעיל שאילתות Firestore לבניית החבילה לפי דרישה.

אתה יכול לנצל את היכולות של Firebase Hosting CDN על ידי הקמת אתר Firebase Hosting המצביע על פונקציית השירות באמצעות כלל שכתוב. CDN משכפלים את החבילה שלך על פני שרתים רבים ושונים, כך שהמשתמשים שלך יכולים לטעון את החבילה מהשרת הקרוב ביותר באופן אוטומטי. זו הגישה המועדפת.

כדי להגדיר זאת ב-Firebase Hosting, צור או ערוך קובץ firebase.json עם התוכן הבא ופרוס את האתר :

{
  "hosting": {
    "ignore": ["firebase.json", "**/.*", "**/node_modules/**"],
    "rewrites": [
      {
        "source": "/bundles/*",
        "function": "ext-firestore-bundle-builder-serve"
      }
    ]
  }
}

לאחר הפריסה, תוכל לגשת לחבילות שלך מה-CDN באמצעות כתובת האתר שלך. לדוגמה: https://your-site-url.com/bundles/:bundleId .

לחלופין, תוכל להגדיר את התוסף לשמירה במטמון ב-Cloud Storage אם אינך רוצה להשתמש ב-Firebase Hosting. במקרה זה, תתקשר ישירות לפונקציית HTTP הפרוסה כדי ליצור חבילות.

שילוב לקוח

בשלב הבא תוכל לצרוך חבילה עם ממשק ה-API של loadBundle של ערכות ה-SDK של Cloud Firestore. ראשית יש להוריד את החבילה, ולאחר מכן לספק ל-SDK. לדוגמה:

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

לאחר הטעינה, תוכל להשתמש בנתונים מהחבילה:

אם ציינת מערך של נתיבי מסמכים בעת הגדרת החבילה, תוכל לקבל את נתוני המסמך על הלקוח שלך באמצעות החבילה:

import { getFirestore, doc, getDocFromCache } from "firebase/firestore";
// Bundle Document IDs: ['users/92x1NgSWYKUC4AG4s2nHGMR2ikZ2']

const ref = doc(getFirestore(), "users/92x1NgSWYKUC4AG4s2nHGMR2ikZ2");
const snapshot = await getDocFromCache(ref);

אם ציינת שאילתות, תוכל להשתמש ב- namedQuery API כדי להפעיל שאילתה מהחבילה:

import { getFirestore, namedQuery } from "firebase/firestore";
const query = await namedQuery(getFirestore(), "queryId");
const snapshot = await getDocsFromCache(query);

מזהי שאילתה מוגדרים כמפתח של כל הגדרת מאפיין queries (ראה להלן).