שדרג ל-Node.js SDK Admin SDK v10 (SDK מודולרי)

גרסה 10 של Admin Node.js SDK מציגה שני שינויים חשובים:

  • התמיכה ב-Node.js 10 הופסקה (זהו שינוי שובר )
  • ה-SDK אימצה דפוס API מודולרי

מדריך זה מספק הוראות ומידע שיעזרו למפתחים לשדרג אפליקציות קיימות של Node.js מגרסאות קודמות של ה-Admin SDK ל-v10.

עדכן את Node.js לגרסה 12 ומעלה

עם מהדורת Admin Node.js SDK v10, Firebase הפסיקה את התמיכה ב-Node.js 10. מפתחים חייבים להשתמש ב-Node.js 12 ומעלה בעת שימוש ב-Admin SDK. אם אתה משתמש ב-Admin Node.js SDK יחד עם Cloud Functions for Firebase, ודא ששדרגת את גרסת Node.js שלך ל-12 ומעלה.

השתמש במודולים במקום במרחבי שמות

מאז הקמתה, ה-Admin Node.js SDK הציע API יציב המובנה כהיררכיית מרחב שמות מקוננת. כתוצאה מכך, ייתכן שהכרת כתיבת קוד שנראה כך:

// Import the global admin namespace
import * as admin from 'firebase-admin';

const app: admin.app.App = admin.initializeApp();

const token: string = await admin.auth().createCustomToken('alice');

const user: admin.auth.UserRecord = await admin.auth().getUser('bob');

החל מגרסה 10, ה-SDK של Admin Node.js מציע מספר נקודות כניסה של מודול עם יצוא בשם. אנו ממליצים למפתחים להשתמש בנקודות הכניסה החדשות הללו כדי לגשת לממשקי ה-API השונים של ה-SDK, בניגוד לשימוש במרחב השמות הגלובלי admin .

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

TypeScript

// Import only what you need
import { initializeApp, App } from 'firebase-admin/app';
import { getAuth, UserRecord } from 'firebase-admin/auth';

const app: App = initializeApp();

const token: string = await getAuth().createCustomToken('alice');

const user: UserRecord = getAuth().getUser('bob');

Node.js

// Import only what you need
const { initializeApp } = require('firebase-admin/app');
const { getAuth } = require('firebase-admin/auth');

const app = initializeApp();

const token = await getAuth().createCustomToken('alice');

const user = getAuth().getUser('bob');

שימוש בנקודות כניסה מודולריות של v10

שים לב שבדוגמאות למעלה, אינך מייבא עוד מרחב שמות admin גלובלי. במקום זאת, אתה מייבא במפורש רק את הסמלים הדרושים לך ממספר נקודות כניסה של מודול. כמו כן, מפתחי TypeScript כבר לא צריכים להשתמש במזהי סוג משולשים כמו admin.auth.UserRecord ו- admin.database.Reference . מכיוון שכל סוג שייך למודול אחד בדיוק, אתה יכול פשוט לייבא אותם לפי השמות הקצרים שלהם כמו UserRecord ו- Reference .

להלן כל נקודות הכניסה למודול הזמינות ב-SDK החל מגרסה 10:

  • firebase-admin/app
  • firebase-admin/auth
  • firebase-admin/database
  • firebase-admin/firestore
  • firebase-admin/instance-id
  • firebase-admin/machine-learning
  • firebase-admin/messaging
  • firebase-admin/פרויקט-ניהול
  • firebase-admin/remote-config
  • firebase-admin/security-rules
  • firebase-admin/storage

הטבלה הבאה מציגה את תחביר הייבוא ​​החלופי עבור כל אחת מפונקציות מרחב השמות מדור קודם:

v9 v10
admin.initializeApp() import { initializeApp } from 'firebase-admin/app'

initializeApp();

admin.app() import { getApp } from 'firebase-admin/ap'

getApp();

admin.credential.cert() import { cert } from 'firebase-admin/app'

cert();

admin.auth() import { getAuth } from 'firebase-admin/auth'

getAuth();

admin.database() import { getDatabase } from 'firebase-admin/database'

getDatabase();

admin.firestore() import { getFirestore } from 'firebase-admin/firestore'

getFirestore();

admin.instanceId() import { getInstanceId } from 'firebase-admin/instance-id'

getInstanceId();

admin.machineLearning() import { getMachineLearning } from 'firebase-admin/machine-learning'

getMachineLearning();

admin.messaging() import { getMessaging } from 'firebase-admin/messaging'

getMessaging()

admin.projectManagement() import { getProjectManagement } from 'firebase-admin/project-management'

getProjectManagement();

admin.remoteConfig() import { getRemoteConfig } from 'firebase-admin/remote-config'

getRemoteConfig();

admin.securityRules() import { getSecurityRules } from 'firebase-admin/security-rules'

getSecurityRules()

admin.storage() import { getStorage } from 'firebase-admin/storage'

getStorage();

השתמש בפונקציות מיוצאות במקום בשיטות באפליקציה

ב-API מדור קודם, אובייקט App חשף מספר שיטות כמו app.auth() ו- app.database() . אנו ממליצים למפתחים להימנע משימוש בשיטות אלה, ובמקום זאת להשתמש באותן נקודות כניסה של מודול שתוארו לעיל כדי להשיג מופעי שירות בהיקף של אובייקט App נתון, ולבצע משימות אחרות ספציפיות לאפליקציה.

v9 v10
app.auth() import { getAuth } from 'firebase-admin/auth';

getAuth(app);

app.database() import { getDatabase } from 'firebase-admin/database';

getDatabase(app);

app.database(url) import { getDatabaseWithUrl } from 'firebase-admin/database';

getDatabaseWithUrl(url, app);

app.firestore() import { getFirestore } from 'firebase-admin/firestore'

getFirestore(app);

app.instanceId() import { getInstanceId } from 'firebase-admin/instance-id'

getInstanceId(app);

app.machineLearning() import { getMachineLearning } from 'firebase-admin/machine-learning'

getMachineLearning(app);

app.messaging() import { getMessaging } from 'firebase-admin/messaging'

getMessaging(app);

app.projectManagement() import { getProjectManagement } from 'firebase-admin/project-management'

getProjectManagement(app);

app.remoteConfig() import { getRemoteConfig } from 'firebase-admin/remote-config'

getRemoteConfig(app);

app.securityRules() import { getSecurityRules } from 'firebase-admin/security-rules'

getSecurityRules(app);

app.storage() import { getStorage } from 'firebase-admin/storage'

getStorage(app);

app.delete() import { deleteApp } from 'firebase-admin/app';

deleteApp(app);

תמיכה במודולי ES

Node.js 12 ומעלה מגיעים עם תמיכה ניסיונית עבור מודולי ES, מה שמאפשר אפילו למפתחים שאינם TypeScript להשתמש במילות המפתח export import ​​בקוד שלהם. החל מהגרסה v10, ה-SDK של Admin Node.js מספק גם תמיכה במודולי ES, כך שמפתחים המטמיעים מודולי ES ב-Node.js רגילים יכולים לייבא את ה-SDK באמצעות תחביר import .

כדי להשתמש במודולי ES עם ה-Admin SDK, תחילה ודא שהפעלת תמיכת ESM עבור זמן הריצה של Node.js. זה נעשה בדרך כלל על ידי הוספת שדה "type": "module" לקובץ package.json שלך. אז אתה יכול לכתוב קוד יישום שנראה כך:

// With {type: module} in the package.json...

// Import only what you need
import { initializeApp }  from 'firebase-admin/app';
import { getAuth } from 'firebase-admin/auth';

const app = initializeApp();

const token = await getAuth().createCustomToken('alice');

const user = getAuth().getUser('bob');