Wersja 10 pakietu SDK Admin Node.js wprowadza 2 ważne zmiany:
- Wycofanie obsługi Node.js 10 (jest to istotna zmiana)
- Pakiet SDK korzysta z modułowego wzorca interfejsu API.
W tym przewodniku znajdziesz instrukcje i informacje, które pomogą deweloperom zaktualizować istniejące aplikacje Node.js z wcześniejszych wersji Admin SDK do wersji 10.
Zaktualizuj Node.js do wersji 12 lub nowszej.
Wraz z wydaniem pakietu SDK Node.js dla administratorów w wersji 10 Firebase wycofała obsługę Node.js 10. Deweloperzy muszą używać pakietu Node.js w wersji 12 lub nowszej.Admin SDK Jeśli używasz pakietu Admin Node.js SDK razem z Cloud Functions for Firebase, uaktualnij Node.js do wersji 12 lub nowszej.
Używanie modułów zamiast przestrzeni nazw
Od samego początku pakiet Admin Node.js SDK oferuje stabilny interfejs API oparty na hierarchii zagnieżdżonych przestrzeni nazw. W rezultacie możesz być już zaznajomiony z tworzeniem kodu, który wygląda tak:
// 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');
Począwszy od wersji 10 pakiet SDK Admin Node.js oferuje wiele punktów wejścia modułu z eksportami o nazwach. Zalecamy deweloperom używanie tych nowych punktów wejścia do uzyskiwania dostępu do różnych interfejsów API pakietu SDK zamiast korzystania z globalnej przestrzeni nazw admin
.
Oto jak wygląda przykład powyżej z nowymi punktami wejścia do modułu:
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');
Korzystanie z punktów wejściowych w wersji 10.
Pamiętaj, że w wymienionych powyżej przykładach nie importujesz już globalnej admin
przestrzeni nazw. Zamiast tego importujesz tylko potrzebne symbole z kilku punktów wejścia w module. Deweloperzy TypeScript nie muszą już używać potrójnie zagnieżdżonych identyfikatorów typów, takich jak admin.auth.UserRecord
i admin.database.Reference
. Każdy typ należy do dokładnie jednego modułu, więc możesz importować je pod ich krótkimi nazwami, np. UserRecord
i Reference
.
Oto wszystkie punkty wejścia modułu dostępne w pakiecie SDK w wersji 10:
- 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
Tabela poniżej zawiera składnię importu zastępczego dla każdej starszej funkcji przestrzeni nazw:
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'
|
Używanie wyeksportowanych funkcji zamiast metod w aplikacji
W starszym interfejsie API obiekt App
udostępniał kilka metod, takich jak app.auth()
i app.database()
. Zalecamy deweloperom, aby nie używali tych metod, a zamiast tego korzystali z tych samych punktów wejścia modułu opisanych powyżej, aby uzyskiwać instancje usługi ograniczone do danego obiektu App
i wykonywać inne zadania związane z konkretną aplikacją.
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';
|
Obsługa modułów ES
Wersja Node.js 12 i nowsze mają eksperymentalne wsparcie dla modułów ES, dzięki czemu nawet deweloperzy, którzy nie używają TypeScript, mogą używać w swoim kodzie słów kluczowych export
i import
. Począwszy od wersji 10 pakiet SDK Admin Node.js obsługuje też moduły ES, dzięki czemu deweloperzy implementujący moduły ES w zwykłym Node.js mogą importować pakiet SDK za pomocą składni import
.
Aby używać modułów ES w Admin SDK, najpierw upewnij się, że masz włączone obsługiwanie ESM w środowisku wykonawczym Node.js. Zwykle polega to na dodaniu pola "type":
"module"
do pliku package.json
. Następnie możesz napisać kod aplikacji, który wygląda tak:
// 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');