Admin Node.js SDK versi 10 menghadirkan dua perubahan penting:
- Dukungan untuk Node.js 10 telah dihentikan (ini adalah perubahan yang dapat menyebabkan gangguan)
- SDK telah mengadopsi pola API modular
Panduan ini memberikan petunjuk dan informasi untuk membantu developer mengupgrade aplikasi Node.js yang ada dari versi Admin SDK sebelumnya ke v10.
Mengupdate Node.js ke v12 atau yang lebih tinggi
Dengan rilis Admin Node.js SDK v10, Firebase telah menghentikan dukungan untuk Node.js 10. Developer harus menggunakan Node.js 12 atau versi yang lebih tinggi saat menggunakan Admin SDK. Jika Anda menggunakan Admin Node.js SDK dengan Cloud Functions for Firebase, pastikan Anda telah mengupgrade Node.js ke versi 12 atau yang lebih tinggi.
Menggunakan modul, bukan namespace
Sejak awal, Admin Node.js SDK telah menawarkan API terstruktur yang stabil sebagai hierarki namespace bertingkat. Akibatnya, Anda mungkin terbiasa menulis kode yang terlihat seperti ini:
// 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');
Mulai dari v10, Admin Node.js SDK menawarkan beberapa titik masuk modul dengan ekspor bernama. Sebaiknya developer menggunakan titik entri baru ini untuk
mengakses berbagai API SDK, bukan menggunakan namespace admin
global.
Berikut adalah tampilan contoh di atas dengan titik masuk modul yang baru:
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');
Menggunakan titik entri modular v10
Perhatikan bahwa dalam contoh di atas, Anda tidak lagi mengimpor namespace admin
global. Sebaliknya, Anda secara eksplisit hanya mengimpor simbol yang diperlukan dari beberapa
titik masuk modul. Selain itu, developer TypeScript tidak perlu lagi menggunakan ID jenis tiga tingkat seperti admin.auth.UserRecord
dan admin.database.Reference
. Karena setiap jenis termasuk dalam satu modul, Anda
dapat mengimpornya dengan nama pendek seperti UserRecord
dan Reference
.
Berikut adalah semua titik entri modul yang tersedia di SDK mulai v10:
- 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
Tabel berikut menunjukkan sintaksis impor pengganti untuk setiap fungsi namespace lama:
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'
|
Menggunakan fungsi yang diekspor, bukan metode di Aplikasi
Di API lama, objek App
menampilkan sejumlah metode seperti
app.auth()
dan app.database()
. Sebaiknya developer tidak menggunakan
metode ini, melainkan menggunakan titik entri modul yang sama seperti yang dijelaskan di atas untuk mendapatkan
instance layanan yang dicakupkan ke objek App
tertentu, dan melakukan tugas khusus
aplikasi lainnya.
v9 | v10 |
---|---|
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';
|
Dukungan modul ES
Node.js 12 dan yang lebih tinggi dilengkapi dengan dukungan eksperimental untuk modul ES, sehingga bahkan developer non-TypeScript dapat menggunakan kata kunci export
dan import
dalam kodenya. Mulai dari rilis v10, Admin Node.js SDK juga menyediakan dukungan modul ES, sehingga developer yang menerapkan modul ES di Node.js biasa dapat mengimpor SDK menggunakan sintaksis import
.
Untuk menggunakan modul ES dengan Admin SDK, pastikan terlebih dahulu bahwa dukungan ESM untuk runtime Node.js telah diaktifkan. Ini biasanya dilakukan dengan menambahkan kolom "type":
"module"
ke file package.json
Anda. Kemudian Anda bisa menulis kode aplikasi yang terlihat seperti ini:
// 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');