שימוש ב-Admin SDK עם Data Connect

Firebase Admin SDK היא קבוצה של ספריות שרתים שמאפשרות ליצור אינטראקציה עם Firebase מסביבות הרשאות, כדי לבצע פעולות כמו ביצוע שאילתות ומוטציות בשירות Firebase Data Connect לצורך ניהול נתונים בכמות גדולה ופעולות אחרות עם הרשאות מורחבות.

Admin SDK מספק API להפעלת פעולות גם במצב קריאה/כתיבה וגם במצב קריאה בלבד. באמצעות פעולות לקריאה בלבד, תוכלו להטמיע פונקציות ניהוליות שלא יכולות לשנות נתונים במסדי הנתונים שלכם.

הגדרה של Admin SDK

כדי להתחיל להשתמש ב-Firebase Data Connect בשרת, קודם צריך להתקין ולהגדיר את Admin SDK ל-Node.js.

אתחול ה-Admin SDK בסקריפטים

כדי לאתחל את ה-SDK, מייבאים את התוספים Data Connect ומצהירים על המיקום ומזהה השירות של הפרויקט.


import { initializeApp } from 'firebase-admin/app';
import { getDataConnect } from 'firebase-admin/data-connect';

// If you'd like to use OAuth2 flows and other credentials to log in,
// visit https://firebase.google.com/docs/admin/setup#initialize-sdk
// for alternative ways to initialize the SDK.

const app = initializeApp();

const dataConnect = getDataConnect({
    serviceId: 'serviceId',
    location: 'us-west2'
});

תכנון שאילתות ומוטציות לשימוש עם Admin SDK

ה-Admin SDK שימושי לבדיקת פעולות Data Connect, בהתאם לשיקולים הבאים.

הסבר על ה-SDK והוראת הפעולה @auth(level: NO_ACCESS)

מכיוון ש-Admin SDK פועל עם הרשאות, הוא יכול להריץ את כל השאילתות והמוטציות שלכם, ללא קשר לרמות הגישה שהוגדרו באמצעות הוראות @auth, כולל הרמה NO_ACCESS.

אם לצד הפעולות של הלקוח אתם מארגנים את השאילתות הניהוליות והמוטציות בקובצי המקור של .gql כדי לייבא אותן לסקריפטים ניהוליים, מומלץ לסמן את פעולות הניהול ללא רמת גישה להרשאה. לחלופין, כדאי להגדיר בצורה מפורשת יותר את הפעולות האלה ולהגדיר אותן בתור NO_ACCESS. כך אפשר למנוע ביצוע פעולות כאלה מלקוחות או בהקשרים אחרים ללא הרשאות.

שימוש ב-SDK עם אמולטור Data Connect

בסביבות של אב טיפוס ובדיקות, כדאי לבצע הטמעת נתונים ופעולות אחרות על נתונים מקומיים. בעזרת Admin SDK תוכלו לפשט את תהליכי העבודה, כי הוא מתעלם מאימות ומהרשאה בתהליכים מקומיים.

ערכות ה-SDK של Firebase לאדמינים מתחברות באופן אוטומטי למהדר Data Connect כשמשנים את משתנה הסביבה DATA_CONNECT_EMULATOR_HOST:

export DATA_CONNECT_EMULATOR_HOST="127.0.0.1:8080"

מידע נוסף זמין בדפים הבאים:

הטמעת תרחישים נפוצים לדוגמה

הקוד Admin SDK ניתן לפעולות בעלות הרשאות על הנתונים הקריטיים שלך.

ה-API של Data Connect מורכב מממשק executeGraphql לקריאה וכתיבה ומממשק executeGraphqlRead לקריאה בלבד.

ניהול נתוני משתמשים

תרחיש לדוגמה לשימוש ב-Admin SDK הוא ניהול נתוני משתמשים.

interface UserData {
  user: {
    id: string;
    name: string;
  };
}

export interface UserVariables {
  id: string;
}

const options:GraphqlOptions<UserVariables> = { variables: { id: "QVBJcy5ndXJ1" } };

// user can be publicly accessible, or restricted to admins
const query = "query getProfile(id: AuthID) { user(id: $id) { id name } }";

//executeGraphql
const gqlResponse = await dataConnect.executeGraphql<UserData, UserVariables>(query, options);

//executeGraphqlRead (similar to above but only for read operations)
const gqlResponse = await dataConnect.executeGraphqlRead<UserData, UserVariables>(query, options);

// gqlResponse -> { "data": { "user": { "id": "QVBJcy5ndXJ1", "name": "Fred" } } }

מה השלב הבא?