Version 10 des Admin Node.js SDK führt zwei wichtige Änderungen ein:
- Die Unterstützung für Node.js 10 wird eingestellt (dies ist eine bahnbrechende Änderung )
- Das SDK hat ein modulares API-Muster übernommen
Dieses Handbuch enthält Anweisungen und Informationen, die Entwicklern beim Upgrade bestehender Node.js-Apps von früheren Versionen des Admin SDK auf v10 helfen sollen.
Aktualisieren Sie Node.js auf v12 oder höher
Mit der Veröffentlichung des Admin Node.js SDK v10 hat Firebase die Unterstützung für Node.js 10 eingestellt. Entwickler müssen Node.js 12 oder höher verwenden, wenn sie das Admin SDK verwenden. Wenn Sie das Admin Node.js SDK zusammen mit Cloud Functions für Firebase verwenden, stellen Sie sicher, dass Sie Ihre Node.js-Version auf 12 oder höher aktualisiert haben.
Verwenden Sie Module anstelle von Namespaces
Seit seiner Einführung bietet das Admin Node.js SDK eine stabile API, die als verschachtelte Namespace-Hierarchie strukturiert ist. Daher sind Sie möglicherweise mit dem Schreiben von Code vertraut geworden, der wie folgt aussieht:
// 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');
Ab v10 bietet das Admin Node.js SDK mehrere Moduleinstiegspunkte mit benannten Exporten. Wir empfehlen Entwicklern, diese neuen Einstiegspunkte zu verwenden, um auf die verschiedenen APIs des SDK zuzugreifen, anstatt den globalen admin
Namespace zu verwenden.
So würde das obige Beispiel mit den neuen Moduleinstiegspunkten aussehen:
Typoskript
// 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');
Verwendung modularer Einstiegspunkte der Version 10
Beachten Sie, dass Sie in den obigen Beispielen keinen globalen admin
Namespace mehr importieren. Stattdessen importieren Sie explizit nur die Symbole, die Sie von mehreren Moduleinstiegspunkten benötigen. Außerdem müssen TypeScript-Entwickler nicht mehr dreifach verschachtelte Typbezeichner wie admin.auth.UserRecord
und admin.database.Reference
verwenden. Da jeder Typ zu genau einem Modul gehört, können Sie sie einfach über ihre Kurznamen wie UserRecord
und Reference
importieren.
Hier sind alle Moduleinstiegspunkte, die im SDK ab Version 10 verfügbar sind:
- firebase-admin/app
- Firebase-Administrator/Auth
- firebase-admin/database
- firebase-admin/firestore
- Firebase-Administrator/Instanz-ID
- firebase-admin/machine-learning
- firebase-admin/messaging
- Firebase-Administrator/Projektmanagement
- firebase-admin/remote-config
- firebase-admin/security-rules
- firebase-admin/storage
Die folgende Tabelle zeigt die Ersetzungsimportsyntax für jede der alten Namespace-Funktionen:
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' |
Verwenden Sie exportierte Funktionen anstelle von Methoden in der App
In der Legacy-API stellte das App
Objekt eine Reihe von Methoden wie app.auth()
und app.database()
bereit. Wir empfehlen Entwicklern, die Verwendung dieser Methoden zu vermeiden und stattdessen dieselben oben beschriebenen Moduleinstiegspunkte zu verwenden, um Dienstinstanzen zu erhalten, die auf ein bestimmtes App
Objekt beschränkt sind, und andere app-spezifische Aufgaben auszuführen.
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'; |
Unterstützung für ES-Module
Node.js 12 und höher verfügen über experimentelle Unterstützung für ES-Module, sodass auch Nicht-TypeScript-Entwickler die export
und import
Schlüsselwörter in ihrem Code verwenden können. Ab der Version v10 bietet das Admin Node.js SDK auch Unterstützung für ES-Module, sodass Entwickler, die ES-Module auf einfachem Node.js implementieren, das SDK mithilfe der import
importieren können.
Um ES-Module mit dem Admin SDK zu verwenden, stellen Sie zunächst sicher, dass Sie die ESM-Unterstützung für Ihre Node.js-Laufzeit aktiviert haben. Dies geschieht normalerweise durch Hinzufügen eines "type": "module"
-Felds zu Ihrer package.json
Datei. Dann können Sie Anwendungscode schreiben, der so aussieht:
// 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');