ارتقا به Node.js SDK Admin SDK v10 (SDK مدولار)

نسخه 10 Admin Node.js SDK دو تغییر مهم را معرفی می کند:

  • پشتیبانی از Node.js 10 متوقف شده است (این یک تغییر قطعی است)
  • SDK یک الگوی API مدولار را اتخاذ کرده است

این راهنما دستورالعمل ها و اطلاعاتی را برای کمک به توسعه دهندگان ارائه می دهد تا برنامه های Node.js موجود را از نسخه های قبلی Admin SDK به نسخه 10 ارتقا دهند.

Node.js را به نسخه ۱۲ یا بالاتر به روز کنید

با انتشار Admin Node.js SDK v10، Firebase پشتیبانی از Node.js 10 را متوقف کرده است. توسعه دهندگان باید هنگام استفاده از Admin SDK از Node.js 12 یا بالاتر استفاده کنند. اگر از Admin Node.js SDK همراه با Cloud Functions برای Firebase استفاده می کنید، مطمئن شوید که نسخه Node.js خود را به ۱۲ یا بالاتر ارتقا داده اید.

از ماژول ها به جای فضاهای نام استفاده کنید

از زمان پیدایش، 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');

استفاده از نقاط ورودی مدولار v10

توجه داشته باشید که در مثال‌های بالا، دیگر فضای نام admin جهانی را وارد نمی‌کنید. در عوض، شما به صراحت فقط نمادهای مورد نیاز خود را از چندین نقطه ورودی ماژول وارد می کنید. همچنین، توسعه دهندگان TypeScript دیگر مجبور نیستند از شناسه های نوع سه گانه مانند admin.auth.UserRecord و admin.database.Reference استفاده کنند. از آنجایی که هر نوع دقیقاً به یک ماژول تعلق دارد، می‌توانید آنها را با نام‌های کوتاهشان مانند UserRecord و Reference وارد کنید.

در اینجا تمام نقاط ورود ماژول در SDK از نسخه 10 موجود است:

  • firebase-admin/app
  • firebase-admin/auth
  • firebase-admin/base
  • 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'

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 در کد خود استفاده کنند. با شروع نسخه 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');