نسخه 10 از SDK مربوط به محیط مدیریت Node.js دو تغییر مهم را معرفی میکند:
- پشتیبانی از Node.js 10 متوقف شده است (این یک تغییر اساسی است)
- SDK از الگوی API ماژولار استفاده میکند.
این راهنما دستورالعملها و اطلاعاتی را ارائه میدهد تا به توسعهدهندگان کمک کند برنامههای Node.js موجود خود را از نسخههای قبلی Admin SDK به نسخه ۱۰ ارتقا دهند.
Node.js را به نسخه ۱۲ یا بالاتر بهروزرسانی کنید
با انتشار SDK نسخه ۱۰ برای Admin Node.js، فایربیس پشتیبانی از Node.js 10 را متوقف کرده است. توسعهدهندگان هنگام استفاده از Admin SDK باید از Node.js نسخه ۱۲ یا بالاتر استفاده کنند. اگر از Admin Node.js SDK به همراه Cloud Functions for Firebase استفاده میکنید، مطمئن شوید که نسخه Node.js خود را به ۱۲ یا بالاتر ارتقا دادهاید .
استفاده از ماژولها به جای فضاهای نام
از زمان آغاز به کار، SDK مربوط به Admin Node.js یک 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');
از نسخه ۱۰ به بعد، SDK مربوط به محیط مدیریت Node.js، چندین نقطه ورود ماژول با خروجیهای نامگذاریشده ارائه میدهد. ما به توسعهدهندگان توصیه میکنیم که از این نقاط ورود جدید برای دسترسی به APIهای مختلف 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');
نود جی اس
// 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');
استفاده از نقاط ورودی ماژولار نسخه ۱۰
توجه داشته باشید که در مثالهای بالا، شما دیگر یک فضای نام سراسری admin را وارد نمیکنید. در عوض، شما به صراحت فقط نمادهایی را که از چندین نقطه ورود ماژول نیاز دارید، وارد میکنید. همچنین، توسعهدهندگان TypeScript دیگر مجبور نیستند از شناسههای نوع سهتایی مانند admin.auth.UserRecord و admin.database.Reference استفاده کنند. از آنجایی که هر نوع دقیقاً به یک ماژول تعلق دارد، میتوانید آنها را با نامهای کوتاهشان مانند UserRecord و Reference وارد کنید.
در اینجا تمام نقاط ورود ماژول موجود در SDK از نسخه ۱۰ آمده است:
- فایربیس-مدیر/برنامه
- فایربیس-مدیر/تاییدکننده
- فایربیس-مدیر/پایگاه داده
- فایربیس-مدیر/فروشگاه آتش
- فایربیس-مدیر/شناسه نمونه
- فایربیس-مدیر/یادگیری ماشین
- فایربیس-مدیر/پیامرسانی
- فایربیس-مدیر/مدیریت پروژه
- فایربیس-ادمین/پیکربندی از راه دور
- فایربیس-مدیر/قوانین-امنیتی
- فایربیس-مدیر/ذخیرهسازی
جدول زیر سینتکس import جایگزین را برای هر یک از توابع فضای نام قدیمی نشان میدهد:
| نسخه ۹ | وی۱۰ |
|---|---|
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 مشخص و انجام سایر وظایف خاص برنامه استفاده کنند.
| نسخه ۹ | وی۱۰ |
|---|---|
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 نسخه ۱۲ و بالاتر با پشتیبانی آزمایشی از ماژولهای ES ارائه میشوند که حتی توسعهدهندگان غیر TypeScript را قادر میسازد تا از کلمات کلیدی export و import در کد خود استفاده کنند. از نسخه ۱۰ به بعد، 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');