Node.js SDK Yönetici SDK'sı v10'a (modüler SDK) yükseltme

Admin Node.js SDK'sının 10. sürümü iki önemli değişiklik getiriyor:

  • Node.js 10 desteği durduruldu (bu son derece önemli bir değişikliktir )
  • SDK modüler bir API modelini benimsemiştir

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 üzeri bir sürüme güncelleyin

Admin Node.js SDK v10 sürümüyle birlikte Firebase, Node.js 10 desteğini sonlandırdı. Geliştiriciler, Admin SDK'yı kullanırken Node.js 12 veya üstünü kullanmalıdır. 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 yüksek bir sürüme yükselttiğinizden emin olun.

Ad alanları yerine modülleri kullanın

Admin Node.js SDK, başlangıcından bu yana iç içe ad alanı hiyerarşisi olarak yapılandırılmış kararlı bir API sunmuştur. Sonuç olarak, şuna benzeyen 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');

Admin Node.js SDK, v10'dan itibaren adlandırılmış dışa aktarımlarla birden fazla modül giriş noktası sunmaktadır. Geliştiricilerin, genel admin ad alanını kullanmak yerine, SDK'nın çeşitli API'lerine erişmek için bu yeni giriş noktalarını kullanmalarını öneririz.

Yukarıdaki örnek yeni modül giriş noktalarıyla şu şekilde görünecektir:

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 admin ad alanını içe aktarmadığınızı unutmayın. Bunun yerine, yalnızca ihtiyaç duyduğunuz 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 geçmiş tür tanımlayıcılarını kullanmasına gerek yok. Her tür tam olarak bir modüle ait olduğundan, bunları UserRecord ve Reference gibi kısa adlarıyla içe aktarabilirsiniz.

V10'dan itibaren SDK'da bulunan tüm modül giriş noktaları şunlardır:

  • firebase-yönetici/uygulama
  • firebase-yönetici/yetkilendirme
  • firebase-yönetici/veritabanı
  • firebase-yönetici/firestore
  • firebase-yönetici/örnek kimliği
  • firebase-yönetici/makine öğrenimi
  • firebase-yönetici/mesajlaşma
  • firebase-yönetici/proje-yönetim
  • firebase-admin/uzaktan-yapılandırma
  • firebase-yönetici/güvenlik-kuralları
  • firebase-yönetici/depolama

Aşağıdaki tablo, eski ad alanı işlevlerinin her biri için yedek içe aktarma sözdizimini gösterir:

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 kullanın

Eski API'de App nesnesi, app.auth() ve app.database() gibi bir dizi yöntemi açığa çıkardı. Geliştiricilerin bu yöntemleri kullanmaktan kaçınmalarını ve bunun yerine belirli bir App nesnesine kapsamı belirlenen hizmet örneklerini elde etmek ve uygulamaya özel diğer görevleri gerçekleştirmek için yukarıda açıklanan aynı modül giriş noktalarını kullanmaları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 üzeri, ES modülleri için deneysel destekle birlikte gelir ve TypeScript kullanmayan geliştiricilerin bile kodlarında export ve import anahtar sözcüklerini kullanmalarına olanak tanır. Admin Node.js SDK, v10 sürümünden itibaren ES modülleri desteği de sağlar; böylece düz Node.js üzerinde ES modülleri uygulayan geliştiriciler, import sözdizimini 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ı eklenerek yapılır. Daha sonra şuna benzeyen uygulama kodunu 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');