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