גרסה 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' |
admin.app() | import { getApp } from 'firebase-admin/ap' |
admin.credential.cert() | import { cert } from 'firebase-admin/app' |
admin.auth() | import { getAuth } from 'firebase-admin/auth' |
admin.database() | import { getDatabase } from 'firebase-admin/database' |
admin.firestore() | import { getFirestore } from 'firebase-admin/firestore' |
admin.instanceId() | import { getInstanceId } from 'firebase-admin/instance-id' |
admin.machineLearning() | import { getMachineLearning } from 'firebase-admin/machine-learning' |
admin.messaging() | import { getMessaging } from 'firebase-admin/messaging' |
admin.projectManagement() | import { getProjectManagement } from 'firebase-admin/project-management' |
admin.remoteConfig() | import { getRemoteConfig } from 'firebase-admin/remote-config' |
admin.securityRules() | import { getSecurityRules } from 'firebase-admin/security-rules' |
admin.storage() | import { getStorage } from 'firebase-admin/storage' |
השתמש בפונקציות מיוצאות במקום בשיטות באפליקציה
ב-API מדור קודם, אובייקט App
חשף מספר שיטות כמו app.auth()
ו- app.database()
. אנו ממליצים למפתחים להימנע משימוש בשיטות אלה, ובמקום זאת להשתמש באותן נקודות כניסה של מודול שתוארו לעיל כדי להשיג מופעי שירות בהיקף של אובייקט App
נתון, ולבצע משימות אחרות ספציפיות לאפליקציה.
v9 | v10 |
---|---|
app.auth() | import { getAuth } from 'firebase-admin/auth'; |
app.database() | import { getDatabase } from 'firebase-admin/database'; |
app.database(url) | import { getDatabaseWithUrl } from 'firebase-admin/database'; |
app.firestore() | import { getFirestore } from 'firebase-admin/firestore' |
app.instanceId() | import { getInstanceId } from 'firebase-admin/instance-id' |
app.machineLearning() | import { getMachineLearning } from 'firebase-admin/machine-learning' |
app.messaging() | import { getMessaging } from 'firebase-admin/messaging' |
app.projectManagement() | import { getProjectManagement } from 'firebase-admin/project-management' |
app.remoteConfig() | import { getRemoteConfig } from 'firebase-admin/remote-config' |
app.securityRules() | import { getSecurityRules } from 'firebase-admin/security-rules' |
app.storage() | import { getStorage } from 'firebase-admin/storage' |
app.delete() | import { deleteApp } from 'firebase-admin/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');