نسخه 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 for 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' |
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');