Yönetici Node.js SDK'sının 10. sürümünde iki önemli değişiklik yapıldı:
- Node.js 10 desteği sonlandırıldı (bu, uyumluluğu bozan bir değişikliktir)
- SDK, modüler bir API kalıbı kullanıyor
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 sonraki bir sürüme güncelleyin
Admin Node.js SDK'sının 10. sürümünün yayınlanmasıyla birlikte Firebase, Node.js 10 desteğini sonlandırdı. Geliştiriciler, Admin SDK kullanırken Node.js 12 veya daha yeni bir sürümü kullanmalıdır. Admin Node.js SDK'yı Cloud Functions for Firebase ile birlikte kullanıyorsanız Node.js sürümünüzü 12 veya daha yeni bir sürüme yükselttiğinizden emin olun.
Ad alanları yerine modülleri kullanma
Yönetici Node.js SDK'sı, başlangıcından beri iç içe yerleştirilmiş ad alanı hiyerarşisi olarak yapılandırılmış kararlı bir API sunmaktadır. Bu nedenle, aşağıdaki gibi görünen kodlar yazmaya alışmış 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');
Yönetici Node.js SDK'sı, v10'dan itibaren adlandırılmış dışa aktarmalarla birden fazla modül giriş noktası sunar. Geliştiricilerin, SDK'nın çeşitli API'lerine erişmek için genel admin
ad alanını kullanmak yerine bu yeni giriş noktalarını kullanmasını öneririz.
Yukarıdaki örneğin yeni modül giriş noktalarıyla nasıl görüneceğini aşağıda bulabilirsiniz:
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 global bir admin
ad alanı içe aktarmadığınızı unutmayın. Bunun yerine, birkaç modül giriş noktasından yalnızca ihtiyacınız olan sembolleri 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 yerleştirilmiş tür tanımlayıcıları kullanması gerekmiyor. Her tür tam olarak bir modüle ait olduğundan bunları UserRecord
ve Reference
gibi kısa adlarıyla içe aktarabilirsiniz.
SDK'da v10 itibarıyla kullanılabilen tüm modül giriş noktaları şunlardır:
- firebase-admin/app
- firebase-admin/auth
- firebase-admin/database
- 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
Aşağıdaki tabloda, eski ad alanı işlevlerinin her biri için değiştirme içe aktarma söz dizimi gösterilmektedir:
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'
|
Uygulamadaki yöntemler yerine dışa aktarılan işlevleri kullanma
Eski API'de App
nesnesi, app.auth()
ve app.database()
gibi çeşitli yöntemler sunuyordu. Geliştiricilerin bu yöntemleri kullanmaktan kaçınmasını, bunun yerine belirli bir App
nesnesine göre kapsamlandırılmış hizmet örnekleri elde etmek ve uygulamaya özel diğer görevleri gerçekleştirmek için yukarıda açıklanan aynı modül giriş noktalarını kullanması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 sonraki sürümlerde ES modülleri için deneysel destek sunulur. Bu sayede, TypeScript kullanmayan geliştiriciler bile kodlarında export
ve import
anahtar kelimelerini kullanabilir. v10 sürümünden itibaren Admin Node.js SDK'sı, ES modülleri desteği de sunar. Böylece, düz Node.js'de ES modüllerini uygulayan geliştiriciler, import
söz dizimini kullanarak SDK'yı içe aktarabilir.
ES modüllerini Admin SDK ile kullanmak için öncelikle Node.js çalışma zamanınızda ESM desteğini etkinleştirdiğinizden emin olun. Bu işlem genellikle "type":
"module"
alanı package.json
dosyanıza eklenerek yapılır. Ardından, aşağıdaki gibi bir uygulama kodu 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');