גרסה 10 של Admin Node.js SDK כוללת שני שינויים חשובים:
- התמיכה ב-Node.js 10 הופסקה (זהו שינוי מהותי)
- ערכת ה-SDK עברה למודל של ממשק API מודולרי
המדריך הזה מכיל הוראות ומידע שיעזרו למפתחים לשדרג אפליקציות קיימות של Node.js מגרסאות קודמות של Admin SDK לגרסה 10.
עדכון Node.js לגרסה 12 ואילך
עם השקת הגרסה 10 של Admin Node.js SDK, התמיכה ב-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, ב-Admin Node.js SDK יש כמה נקודות כניסה למודולים עם ייצוא בעל שם. אנחנו ממליצים למפתחים להשתמש בנקודות הכניסה החדשות האלה כדי לגשת לממשקי ה-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');
שימוש בנקודות כניסה מודולריות בגרסה 10
שימו לב שבדוגמאות שלמעלה, כבר לא מייבאים מרחב שמות גלובלי של 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/project-management
- 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
בקוד שלהם. החל מהגרסה 10, ב-Admin Node.js SDK יש גם תמיכה במודולים של 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');