Node.js SDK Admin SDK v10'a (modüler SDK) yükseltme

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 kullanımdan kaldırıldı (bu yeni bir değişikliktir)
  • SDK, modüler bir API kalıbını benimsedi

Bu kılavuzda, geliştiricilerin mevcut Node.js uygulamalarını Yönetici SDK'sinin önceki sürümlerinden v10'a 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ştiriciler, Yönetici SDK'sını kullanırken Node.js 12 veya sonraki bir sürümü kullanmalıdır. Yönetici Node.js SDK'sını Cloud Functions for Firebase ile birlikte kullanıyorsanız Node.js sürümünüzü 12 veya sonraki bir sürüme güncellediğ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ş 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ı, v10 sürümünden itibaren adlandırılmış dışa aktarma işlemlerine sahip birden fazla modül giriş noktası sunar. Geliştiricilerin, global admin ad alanı yerine SDK'nın çeşitli API'lerine erişmek için bu yeni giriş noktalarını kullanmalarını öneririz.

Yeni modül giriş noktalarıyla birlikte yukarıdaki örnek şöyle 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');

v10 modüler giriş noktalarını kullanma

Yukarıdaki örneklerde artık genel bir admin ad alanını içe aktarmadığınızı unutmayın. Bunun yerine, birkaç modül giriş noktasından yalnızca ihtiyacınız olan simgeleri açık bir şekilde içe aktarabilirsiniz. Ayrıca, TypeScript geliştiricilerinin artık admin.auth.UserRecord ve admin.database.Reference gibi üç kez iç içe yerleştirilmiş tür tanımlayıcılar kullanmak zorunda değildir. Her tür tam olarak bir modüle ait olduğundan bunları yalnızca UserRecord ve Reference gibi kısa adlarıyla içe aktarabilirsiniz.

v10 sürümünden itibaren SDK'da bulunan tüm modül giriş noktaları şunlardır:

  • firebase-yönetici/uygulama
  • firebase-admin/auth
  • firebase-admin/database
  • firebase-admin/restore
  • firebase-admin/ornek-kimliği
  • firebase-admin/machine-learning
  • firebase-admin/mesajlaşma
  • firebase-admin/proje-yönetimi
  • firebase-admin/remote-config
  • firebase-admin/güvenlik-kuralları
  • firebase-admin/storage

Aşağıdaki tabloda, eski ad alanı işlevlerinin her biri için yedek içe aktarma söz dizimi gösterilmektedir:

sürüm 9 s10
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 kullan

Eski API'de App nesnesi, app.auth() ve app.database() gibi çeşitli yöntemleri açığa çıkardı. Geliştiricilerin bu yöntemleri kullanmaktan kaçınmalarını ve bunun yerine belirli bir App nesnesi kapsamındaki hizmet örneklerini almak ve uygulamaya özgü diğer görevleri gerçekleştirmek için yukarıda açıklanan modül giriş noktalarını kullanmalarını öneririz.

sürüm 9 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 destekle birlikte sunulur. Bu sayede, TypeScript kullanmayan geliştiriciler bile kodlarında export ve import anahtar kelimelerini kullanabilir. v10 sürümünden itibaren Yönetici Node.js SDK'sı, ES modülleri desteği de sağlar. Böylece düz Node.js üzerinde ES modüllerini kullanan geliştiriciler, import söz dizimini kullanarak SDK'yı içe aktarabilir.

ES modüllerini Yönetici SDK'sı ile kullanmak istiyorsanız ö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 şuna benzer 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');