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

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

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

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