الترقية إلى Node.js SDK Admin SDK v10 (SDK المعيارية)

يقدم الإصدار 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. يجب على المطورين استخدام Node.js 12 أو أعلى عند استخدام Admin SDK. إذا كنت تستخدم Admin Node.js SDK مع Cloud Functions for Firebase، فتأكد من ترقية إصدار Node.js إلى الإصدار 12 أو أعلى.

استخدم الوحدات بدلاً من مساحات الأسماء

منذ إنشائها، قدمت Admin Node.js SDK واجهة برمجة تطبيقات مستقرة تم تنظيمها كتسلسل هرمي لمساحة الاسم المتداخلة. ونتيجة لذلك، ربما أصبحت على دراية بكتابة التعليمات البرمجية التي تبدو كالتالي:

// 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 نقاط إدخال متعددة للوحدات النمطية مع عمليات تصدير مسماة. نوصي المطورين باستخدام نقاط الإدخال الجديدة هذه للوصول إلى واجهات برمجة التطبيقات المتنوعة لمجموعة SDK، بدلاً من استخدام مساحة اسم admin العامة.

إليك ما سيبدو عليه المثال أعلاه مع نقاط إدخال الوحدة الجديدة:

تايب سكريبت

// 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/التعلم الآلي
  • 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'

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();

استخدم الوظائف المصدرة بدلاً من الطرق الموجودة في التطبيق

في واجهة برمجة التطبيقات القديمة، كشف كائن 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

يأتي الإصدار 12 من Node.js والإصدارات الأحدث مزودًا بدعم تجريبي لوحدات ES، مما يمكّن حتى المطورين الذين لا يستخدمون TypeScript من استخدام الكلمات الرئيسية export import في التعليمات البرمجية الخاصة بهم. بدءًا من الإصدار v10، يوفر 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');