Admin Node.js SDK'sının 10. sürümü iki önemli değişiklik getiriyor:
- Node.js 10 desteği durduruldu (bu son derece önemli bir değişikliktir )
- SDK modüler bir API modelini benimsemiştir
Bu kılavuz, geliştiricilerin mevcut Node.js uygulamalarını Admin SDK'nın önceki sürümlerinden v10'a yükseltmelerine yardımcı olacak talimatlar ve bilgiler sağlar.
Node.js'yi v12 veya üzeri bir sürüme güncelleyin
Admin Node.js SDK v10 sürümüyle birlikte Firebase, Node.js 10 desteğini sonlandırdı. Geliştiriciler, Admin SDK'yı kullanırken Node.js 12 veya üstünü kullanmalıdır. Admin Node.js SDK'sını Cloud Functions for Firebase ile birlikte kullanıyorsanız Node.js sürümünüzü 12 veya daha yüksek bir sürüme yükselttiğinizden emin olun.
Ad alanları yerine modülleri kullanın
Admin Node.js SDK, başlangıcından bu yana iç içe ad alanı hiyerarşisi olarak yapılandırılmış kararlı bir API sunmuştur. Sonuç olarak, şuna benzeyen kod yazmaya aşina olabilirsiniz:
// 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');
Admin Node.js SDK, v10'dan itibaren adlandırılmış dışa aktarımlarla birden fazla modül giriş noktası sunmaktadır. Geliştiricilerin, genel admin
ad alanını kullanmak yerine, SDK'nın çeşitli API'lerine erişmek için bu yeni giriş noktalarını kullanmalarını öneririz.
Yukarıdaki örnek yeni modül giriş noktalarıyla şu şekilde görünecektir:
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 modüler giriş noktalarını kullanma
Yukarıdaki örneklerde artık genel admin
ad alanını içe aktarmadığınızı unutmayın. Bunun yerine, yalnızca ihtiyaç duyduğunuz sembolleri çeşitli modül giriş noktalarından açıkça içe aktarırsınız. Ayrıca TypeScript geliştiricilerinin artık admin.auth.UserRecord
ve admin.database.Reference
gibi üçlü iç içe geçmiş tür tanımlayıcılarını kullanmasına gerek yok. Her tür tam olarak bir modüle ait olduğundan, bunları UserRecord
ve Reference
gibi kısa adlarıyla içe aktarabilirsiniz.
V10'dan itibaren SDK'da bulunan tüm modül giriş noktaları şunlardır:
- firebase-yönetici/uygulama
- firebase-yönetici/yetkilendirme
- firebase-yönetici/veritabanı
- firebase-yönetici/firestore
- firebase-yönetici/örnek kimliği
- firebase-yönetici/makine öğrenimi
- firebase-yönetici/mesajlaşma
- firebase-yönetici/proje-yönetim
- firebase-admin/uzaktan-yapılandırma
- firebase-yönetici/güvenlik-kuralları
- firebase-yönetici/depolama
Aşağıdaki tablo, eski ad alanı işlevlerinin her biri için yedek içe aktarma sözdizimini gösterir:
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' |
Uygulamada yöntemler yerine dışa aktarılan işlevleri kullanın
Eski API'de App
nesnesi, app.auth()
ve app.database()
gibi bir dizi yöntemi açığa çıkardı. Geliştiricilerin bu yöntemleri kullanmaktan kaçınmalarını ve bunun yerine belirli bir App
nesnesine kapsamı belirlenen hizmet örneklerini elde etmek ve uygulamaya özel diğer görevleri gerçekleştirmek için yukarıda açıklanan aynı modül giriş noktalarını kullanmalarını öneririz.
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 modülleri desteği
Node.js 12 ve üzeri, ES modülleri için deneysel destekle birlikte gelir ve TypeScript kullanmayan geliştiricilerin bile kodlarında export
ve import
anahtar sözcüklerini kullanmalarına olanak tanır. Admin Node.js SDK, v10 sürümünden itibaren ES modülleri desteği de sağlar; böylece düz Node.js üzerinde ES modülleri uygulayan geliştiriciler, import
sözdizimini kullanarak SDK'yı içe aktarabilir.
ES modüllerini Admin SDK ile kullanmak için öncelikle Node.js çalışma zamanınız için ESM desteğini etkinleştirdiğinizden emin olun. Bu genellikle package.json
dosyanıza bir "type": "module"
alanı eklenerek yapılır. Daha sonra şuna benzeyen uygulama kodunu yazabilirsiniz:
// 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');