Phiên bản 10 của SDK Admin Node.js có hai thay đổi quan trọng:
- Ngừng hỗ trợ Node.js 10 (đây là thay đổi có thể gây lỗi)
- SDK đã sử dụng mẫu API mô-đun
Hướng dẫn này cung cấp hướng dẫn và thông tin để giúp nhà phát triển nâng cấp các ứng dụng Node.js hiện có từ các phiên bản Admin SDK trước đó lên phiên bản 10.
Cập nhật Node.js lên phiên bản 12 trở lên
Với bản phát hành SDK Node.js dành cho quản trị viên phiên bản 10, Firebase đã ngừng hỗ trợ Node.js 10. Nhà phát triển phải sử dụng Node.js 12 trở lên khi sử dụng Admin SDK. Nếu bạn đang sử dụng SDK Node.js dành cho quản trị viên cùng với Cloud Functions for Firebase, hãy đảm bảo rằng bạn đã nâng cấp phiên bản Node.js lên 12 trở lên.
Sử dụng mô-đun thay vì không gian tên
Kể từ khi ra mắt, SDK Node.js dành cho quản trị viên đã cung cấp một API ổn định được cấu trúc dưới dạng hệ phân cấp không gian tên lồng nhau. Do đó, bạn có thể đã quen với việc viết mã như sau:
// 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');
Kể từ phiên bản 10, SDK Node.js dành cho quản trị viên cung cấp nhiều điểm truy cập mô-đun với các mục xuất có tên. Nhà phát triển nên sử dụng các điểm truy cập mới này để truy cập vào nhiều API của SDK, thay vì sử dụng không gian tên admin
toàn cục.
Dưới đây là ví dụ trên với các điểm truy cập mô-đun mới:
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');
Sử dụng các điểm truy cập mô-đun v10
Xin lưu ý rằng trong các ví dụ ở trên, bạn không còn nhập không gian tên admin
toàn cục. Thay vào đó, bạn chỉ nhập rõ ràng các ký hiệu cần thiết từ một số điểm truy cập mô-đun. Ngoài ra, nhà phát triển TypeScript không còn phải sử dụng giá trị nhận dạng loại lồng nhau ba lần như admin.auth.UserRecord
và admin.database.Reference
. Vì mỗi loại thuộc về đúng một mô-đun, nên bạn chỉ cần nhập các loại đó theo tên ngắn như UserRecord
và Reference
.
Dưới đây là tất cả các điểm truy cập mô-đun có trong SDK kể từ phiên bản 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
Bảng sau đây cho thấy cú pháp nhập thay thế cho từng hàm không gian tên cũ:
Phiên bản 9 | Phiên bản 10 |
---|---|
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'
|
Sử dụng các hàm đã xuất thay vì phương thức trên Ứng dụng
Trong API cũ, đối tượng App
hiển thị một số phương thức như app.auth()
và app.database()
. Nhà phát triển nên tránh sử dụng các phương thức này và thay vào đó, hãy sử dụng cùng một điểm truy cập mô-đun được mô tả ở trên để lấy các thực thể dịch vụ trong phạm vi của một đối tượng App
nhất định và thực hiện các tác vụ khác dành riêng cho ứng dụng.
Phiên bản 9 | Phiên bản 10 |
---|---|
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';
|
Hỗ trợ mô-đun ES
Node.js 12 trở lên có hỗ trợ thử nghiệm cho các mô-đun ES, cho phép ngay cả các nhà phát triển không phải TypeScript cũng có thể sử dụng từ khoá export
và import
trong mã của họ. Kể từ bản phát hành v10, SDK Node.js dành cho quản trị viên cũng hỗ trợ các mô-đun ES để các nhà phát triển triển khai các mô-đun ES trên Node.js thuần tuý có thể nhập SDK bằng cú pháp import
.
Để sử dụng các mô-đun ES với Admin SDK, trước tiên, hãy đảm bảo bạn đã bật tính năng hỗ trợ ESM cho môi trường thời gian chạy Node.js. Thông thường, bạn có thể làm việc này bằng cách thêm trường "type":
"module"
vào tệp package.json
. Sau đó, bạn có thể viết mã ứng dụng có dạng như sau:
// 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');