Node.js SDK Yönetici SDK'sı v10 sürümüne (modüler SDK) yükseltin

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'

initializeApp();

admin.app() import { getApp } from 'firebase-admin/ap'

getApp();

admin.credential.cert() import { cert } from 'firebase-admin/app'

cert();

admin.auth() import { getAuth } from 'firebase-admin/auth'

getAuth();

admin.database() import { getDatabase } from 'firebase-admin/database'

getDatabase();

admin.firestore() import { getFirestore } from 'firebase-admin/firestore'

getFirestore();

admin.instanceId() import { getInstanceId } from 'firebase-admin/instance-id'

getInstanceId();

admin.machineLearning() import { getMachineLearning } from 'firebase-admin/machine-learning'

getMachineLearning();

admin.messaging() import { getMessaging } from 'firebase-admin/messaging'

getMessaging()

admin.projectManagement() import { getProjectManagement } from 'firebase-admin/project-management'

getProjectManagement();

admin.remoteConfig() import { getRemoteConfig } from 'firebase-admin/remote-config'

getRemoteConfig();

admin.securityRules() import { getSecurityRules } from 'firebase-admin/security-rules'

getSecurityRules()

admin.storage() import { getStorage } from 'firebase-admin/storage'

getStorage();

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';

getAuth(app);

app.database() import { getDatabase } from 'firebase-admin/database';

getDatabase(app);

app.database(url) import { getDatabaseWithUrl } from 'firebase-admin/database';

getDatabaseWithUrl(url, app);

app.firestore() import { getFirestore } from 'firebase-admin/firestore'

getFirestore(app);

app.instanceId() import { getInstanceId } from 'firebase-admin/instance-id'

getInstanceId(app);

app.machineLearning() import { getMachineLearning } from 'firebase-admin/machine-learning'

getMachineLearning(app);

app.messaging() import { getMessaging } from 'firebase-admin/messaging'

getMessaging(app);

app.projectManagement() import { getProjectManagement } from 'firebase-admin/project-management'

getProjectManagement(app);

app.remoteConfig() import { getRemoteConfig } from 'firebase-admin/remote-config'

getRemoteConfig(app);

app.securityRules() import { getSecurityRules } from 'firebase-admin/security-rules'

getSecurityRules(app);

app.storage() import { getStorage } from 'firebase-admin/storage'

getStorage(app);

app.delete() import { deleteApp } from 'firebase-admin/app';

deleteApp(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');