Join us in person and online for Firebase Summit on October 18, 2022. Learn how Firebase can help you accelerate app development, release your app with confidence, and scale with ease. Register now

צור וטפל בטריגרים של אירועים מותאמים אישית

קל לארגן דפים בעזרת אוספים אפשר לשמור ולסווג תוכן על סמך ההעדפות שלך.

עם Cloud Functions v2, אתה יכול להפעיל פונקציות בתגובה לאירועים מותאמים אישית . אלו הם אירועים המסופקים על ידי ספקי אירועים מיוחדים או נוספים, בניגוד לאירועי Firebase הנתמכים באופן מקורי על ידי Firebase SDK for Cloud Functions.

במהלך התצוגה המקדימה הציבורית, אירועים מותאמים אישית זמינים מסופקים על ידי תוספי Firebase. אתה יכול להתקין תוסף באפליקציה שלך ואז להגיב לאירועים מותאמים אישית בזרימה הבסיסית הזו:

  1. התקן תוסף המספק אירוע מותאם אישית אחד או יותר.
  2. טפל בסוג אירוע על ידי פריסת מטפל onCustomEventPublished . בפונקציה זו, נתח את המטען המוחזר באובייקט CloudEvent , ובצע כל לוגיקה מותאמת אישית שהאפליקציה שלך דורשת.

לדוגמה, הרחבה שנועדה לעזור לאפליקציות לעבד תמונות גדולות עשויה לשדר אירוע עם השלמת שינוי גודל התמונה. אפליקציות שמותקנת בהן תוסף זה יוכלו להתמודד עם אירוע ההשלמה על ידי עדכון קישורים באפליקציה כדי להצביע על גרסאות ששנו את גודל התמונה.

כל האירועים המותאמים אישית תואמים את פורמט האירועים של CloudEvents JSON . למידע מרכזי כגון רשימת האירועים הזמינים ופרטי מטען האירועים, עיין בתיעוד של תוסף מסוים.

לטפל באירוע מותאם אישית

לאחר שגילית אירוע מותאם אישית זמין מתוסף מותקן, תוכל לטפל באירוע זה באמצעות ה
מטפל onCustomEventPublished . ראשית, ייבא את המטפל הזה מה-SDK של Eventarc יחד עם Firebase Admin SDK עבור Node.js עבור הלוגיקה המותאמת אישית שלך ו- logger SDK לטיפול בשגיאות:

const {onCustomEventPublished} = require("firebase-functions/v2/eventarc");
const logger = require("firebase-functions/logger");
const {initializeApp} = require("firebase-admin/app");
const {getFirestore} = require("firebase-admin/firestore");

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

exports.onimageresized = onCustomEventPublished(
    "firebase.extensions.storage-resize-images.v1.complete",
    (event) => {
      logger.info("Received image resize completed event", event);
      // For example, write resized image details into Firestore.
      return getFirestore()
          .collection("images")
          .doc(event.subject.replace("/", "_")) // original file path
          .set(event.data); // resized images paths and sizes
    });

עבור כל הרחבה מסוימת, המטען המוחזר באובייקט האירוע מספק נתונים שבהם תוכל להשתמש כדי לבצע לוגיקה מותאמת אישית עבור זרימת היישום שלך. במקרה זה, הפונקציה משתמשת ב-Admin SDK כדי להעתיק מטא-נתונים על התמונה שגודלה שונה לאוסף ב-Cloud Firestore, קבלת שם הקובץ subject שסופק על-ידי האירוע, ושמירת מטא- data שסופקו על-ידי האירוע.

טפל באירוע בערוץ שאינו ברירת מחדל

הדוגמה למעלה מניחה שאירוע השלמת התמונה מתפרסם בערוץ ברירת המחדל, במיקום ברירת המחדל us-central1 כפי שצוין בהרחבה. במקרים שבהם אירוע מותאם אישית מתפרסם בערוץ שאינו ברירת מחדל, תצטרך לציין את הערוץ בקוד הפונקציה שלך. לדוגמה, אם אתה רוצה לטפל באירועים שמתפרסמים בערוץ שאינו ברירת מחדל עבור מיקום us-west1 , עליך לציין את הערוץ כפי שמוצג:

import { onCustomEventPublished } from "firebase-functions/v2/eventarc";

export const func = onCustomEventPublished(
    {
      eventType: "firebase.extensions.storage-resize-images.v1.complete",
      channel: "locations/us-west1/channels/firebase",
      region: "us-west1",
    },
    (event) => { ... });