Nâng cấp lên SDK quản trị SDK Node.js v10 (SDK mô-đun)

Phiên bản 10 của SDK Node.js dành cho quản trị viên giới thiệu hai thay đổi quan trọng:

  • Hỗ trợ cho Node.js 10 đã bị ngừng (đây là một thay đổi đáng chú ý )
  • SDK đã áp 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 ứng dụng Node.js hiện có từ các phiên bản SDK quản trị cũ hơn lên v10.

Cập nhật Node.js lên v12 trở lên

Với bản phát hành SDK quản trị Node.js v10, Firebase đã ngừng hỗ trợ cho Node.js 10. Nhà phát triển phải sử dụng Node.js 12 trở lên khi sử dụng SDK quản trị. 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 cho Firebase, hãy đảm bảo rằng bạn đã nâng cấp phiên bản Node.js của mình lên 12 trở lên.

Sử dụng mô-đun thay vì không gian tên

Kể từ khi thành lập, SDK quản trị Node.js đã cung cấp một API ổn định có cấu trúc như một hệ thống 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ã trông như thế này:

// 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');

Bắt đầu từ v10, SDK Node.js dành cho quản trị viên cung cấp nhiều điểm nhập mô-đun với các bản xuất được đặt tên. Chúng tôi khuyên các 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 các API khác nhau của SDK, thay vì sử dụng không gian tên admin chung.

Đây là ví dụ trên với các điểm vào mô-đun mới:

Bản đánh máy

// 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 điểm vào mô-đun v10

Lưu ý rằng, trong các ví dụ trên, bạn không còn nhập vùng tên admin toàn cầu nữa. Thay vào đó, bạn chỉ nhập rõ ràng các ký hiệu bạn cần từ một số điểm vào mô-đun. Ngoài ra, các nhà phát triển TypeScript không còn phải sử dụng các mã định danh loại lồng nhau ba lần như admin.auth.UserRecordadmin.database.Reference . Vì mỗi loại thuộc về chính xác một mô-đun nên bạn chỉ cần nhập chúng bằng tên viết tắt như UserRecordReference .

Dưới đây là tất cả các điểm đầu vào mô-đun có sẵn trong SDK kể từ phiên bản 10:

  • firebase-admin/ứng dụng
  • firebase-admin/auth
  • firebase-admin/cơ sở dữ liệu
  • firebase-admin/firestore
  • firebase-admin/instance-id
  • firebase-admin/machine-learning
  • firebase-admin/nhắn tin
  • firebase-admin/quản lý dự án
  • firebase-admin/remote-config
  • firebase-admin/security-rules
  • firebase-admin/lưu trữ

Bảng sau đây hiển thị cú pháp nhập thay thế cho từng hàm vùng chứa tên cũ:

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();

Sử dụng các hàm đã xuất thay vì các 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()app.database() . Chúng tôi khuyên các nhà phát triển nên tránh sử dụng các phương pháp này và thay vào đó hãy sử dụng các điểm nhập mô-đun tương tự được mô tả ở trên để lấy các phiên bản dịch vụ trong phạm vi đối tượng Ứ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.

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);

Hỗ trợ mô-đun ES

Node.js 12 trở lên đi kèm với 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 sử dụng từ khóa exportimport trong mã của họ. Bắt đầu từ bản phát hành v10, SDK Node.js dành cho quản trị viên cũng cung cấp hỗ trợ các mô-đun ES để các nhà phát triển triển khai mô-đun ES trên Node.js đơn giản có thể nhập SDK bằng cú pháp import .

Để sử dụng mô-đun ES với SDK quản trị, trước tiên hãy đảm bảo bạn đã bật hỗ trợ ESM cho thời gian chạy Node.js của mình. Điều này thường được thực hiện bằng cách thêm trường "type": "module" vào tệp package.json của bạn. Sau đó, bạn có thể viết mã ứng dụng trông như thế này:

// 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');