Yönetici Node.js SDK'sının 10. sürümünde iki önemli değişiklik yapılmıştır:
- Node.js 10 desteği sonlandırıldı (bu önemli bir değişikliktir)
- SDK, modüler bir API kalıbı benimsemiştir
Bu kılavuzda, geliştiricilerin mevcut Node.js uygulamalarını Admin SDK'ün önceki sürümlerinden 10. sürüme yükseltmelerine yardımcı olacak talimatlar ve bilgiler sağlanmaktadır.
Node.js'yi v12 veya sonraki bir sürüme güncelleme
Yönetici Node.js SDK v10 sürümüyle Firebase, Node.js 10 desteğini sonlandırdı. Geliştiricilerin Admin SDK kullanırken Node.js 12 veya daha yeni bir sürümü kullanması gerekir. 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 yeni bir sürüme yükselttiğinizden emin olun.
Ad alanları yerine modüller kullanın
Yönetici Node.js SDK'sı, kullanıma sunulduğundan beri iç içe yerleştirilmiş bir ad alanı hiyerarşisi olarak yapılandırılmış kararlı bir API sunmuştur. Sonuç olarak şuna benzer bir 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');
Yönetici Node.js SDK'sı, 10. sürümden 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 global admin
ad alanını kullanmak yerine bu yeni giriş noktalarını kullanmasını öneririz.
Yukarıdaki örnek, yeni modül giriş noktalarıyla şu şekilde görünür:
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');
10. sürüm modüler giriş noktalarını kullanma
Yukarıdaki örneklerde artık global admin
ad alanını içe aktarmadığınızı unutmayın. Bunun yerine, yalnızca ihtiyacınız olan 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 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 10. sürümden itibaren kullanılabilen tüm modül giriş noktaları aşağıda verilmiştir:
- 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ının her işlevi için değişim amaçlı 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'
|
Uygulamada 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ı ve bunun yerine belirli bir App
nesnesine kapsamlı hizmet örnekleri elde etmek ve uygulamaya özgü diğer görevleri gerçekleştirmek için yukarıda açıklanan aynı modül giriş noktalarını kullanmasını öneririz.
v9 | s10 |
---|---|
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ümler, ES modülleri için deneysel destek sunar. Bu sayede, Typescript kullanmayan geliştiriciler bile kodlarında export
ve import
anahtar kelimelerini kullanabilir. Yönetici Node.js SDK'sı, v10 sürümünden itibaren ES modülleri desteği de sunar. Böylece, ES modüllerini düz Node.js'de 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ız için ESM desteğini etkinleştirdiğinizden emin olun. Bu genellikle package.json
dosyanıza bir "type":
"module"
alanı ekleyerek yapılır. Ardından, aşağıdaki gibi görünen 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');