Kết nối ứng dụng của bạn với Trình mô phỏng Cloud Storage cho Firebase

Trước khi kết nối ứng dụng với trình mô phỏng Cloud Storage for Firebase, hãy đảm bảo rằng bạn hiểu quy trình làm việc Firebase Local Emulator Suite tổng thể, đồng thời cài đặt và định cấu hình Local Emulator Suite cũng như xem xét các lệnh CLI của bộ công cụ này.

Chọn một dự án Firebase

Firebase Local Emulator Suite mô phỏng các sản phẩm cho một dự án Firebase.

Để chọn dự án cần sử dụng, trước khi bạn bắt đầu trình mô phỏng, trong CLI, hãy chạy firebase use trong thư mục làm việc. Hoặc bạn có thể truyền cờ --project cho mỗi lệnh trình mô phỏng command.

Local Emulator Suite hỗ trợ mô phỏng các dự án Firebase thực và các dự án bản trình diễn.

Loại dự án Tính năng Sử dụng với trình mô phỏng
Thực

Dự án Firebase thực là dự án mà bạn đã tạo và định cấu hình (rất có thể thông qua bảng điều khiển Firebase).

Các dự án thực có tài nguyên trực tiếp, chẳng hạn như phiên bản cơ sở dữ liệu, nhóm lưu trữ , hàm hoặc bất kỳ tài nguyên nào khác mà bạn thiết lập cho dự án Firebase đó.

Khi làm việc với các dự án Firebase thực, bạn có thể chạy trình mô phỏng cho bất kỳ hoặc tất cả các sản phẩm được hỗ trợ.

Đối với bất kỳ sản phẩm nào mà bạn không mô phỏng, ứng dụng và mã của bạn sẽ tương tác với tài nguyên trực tiếp (phiên bản cơ sở dữ liệu, nhóm lưu trữ, hàm, v.v.).

Bản trình diễn

Dự án Firebase bản trình diễn không có cấu hình Firebase thực và không có tài nguyên trực tiếp. Bạn thường truy cập vào các dự án này thông qua các lớp học lập trình hoặc các hướng dẫn khác.

Mã dự án cho các dự án bản trình diễn có tiền tố demo-.

Khi làm việc với các dự án Firebase bản trình diễn, ứng dụng và mã của bạn tương tác với trình mô phỏng chỉ. Nếu ứng dụng của bạn cố gắng tương tác với một tài nguyên mà trình mô phỏng không chạy, thì mã đó sẽ không thành công.

Bạn nên sử dụng các dự án bản trình diễn bất cứ khi nào có thể. Các lợi ích bao gồm:

  • Dễ thiết lập hơn vì bạn có thể chạy trình mô phỏng mà không cần tạo dự án Firebase
  • An toàn hơn vì nếu mã của bạn vô tình gọi các tài nguyên không được mô phỏng (sản xuất), thì sẽ không có khả năng thay đổi dữ liệu, mức sử dụng và thanh toán
  • Hỗ trợ ngoại tuyến tốt hơn vì bạn không cần truy cập vào Internet để tải cấu hình SDK xuống.

Thiết lập ứng dụng để giao tiếp với trình mô phỏng

SDK Android, Apple và Web

Thiết lập cấu hình trong ứng dụng hoặc các lớp kiểm thử để tương tác với trình mô phỏng Cloud Storage for Firebase như sau.

Kotlin
// 10.0.2.2 is the special IP address to connect to the 'localhost' of
// the host computer from an Android emulator.
val storage = Firebase.storage
storage.useEmulator("10.0.2.2", 9199)
Java
// 10.0.2.2 is the special IP address to connect to the 'localhost' of
// the host computer from an Android emulator.
FirebaseStorage storage = FirebaseStorage.getInstance();
storage.useEmulator("10.0.2.2", 9199);
Swift
Storage.storage().useEmulator(withHost: "127.0.0.1", port: 9199)

Web

const { getStorage, connectStorageEmulator } = require("firebase/storage");

const storage = getStorage();
if (location.hostname === "localhost") {
  // Point to the Storage emulator running on localhost.
  connectStorageEmulator(storage, "127.0.0.1", 9199);
} 

Web

var storage = firebase.storage();
if (location.hostname === "localhost") {
  // Point to the Storage emulator running on localhost.
  storage.useEmulator("127.0.0.1", 9199);
} 

Bạn không cần thiết lập thêm để kiểm thử Cloud Functions được kích hoạt bởi các sự kiện bằng trình mô phỏng.Cloud Storage for Firebase Khi cả Cloud Storage for FirebaseCloud Functions trình mô phỏng đều đang chạy, chúng sẽ tự động hoạt động cùng nhau.

Admin SDKs

Các Firebase Admin SDK tự động kết nối với trình mô phỏng Cloud Storage for Firebase khi biến môi trường FIREBASE_STORAGE_EMULATOR_HOST được thiết lập:

export FIREBASE_STORAGE_EMULATOR_HOST="127.0.0.1:9199"

Xin lưu ý rằng trình mô phỏng Cloud Functions tự động nhận biết trình mô phỏng Cloud Storage for Firebase nên bạn có thể bỏ qua bước này khi kiểm thử các hoạt động tích hợp giữa Cloud FunctionsCloud Storage for Firebase trình mô phỏng. Biến môi trường sẽ tự động được thiết lập cho SDK dành cho quản trị viên trong Cloud Storage for Firebase.

Nếu muốn mã Admin SDK kết nối với một trình mô phỏng dùng chung đang chạy trong một môi trường khác, bạn cần chỉ định cùng một mã dự án mà bạn đã thiết lập bằng Firebase CLI. Bạn có thể truyền trực tiếp mã dự án đến initializeApp hoặc thiết lập biến môi trường GCLOUD_PROJECT.

SDK dành cho quản trị viên Node.js
admin.initializeApp({ projectId: "your-project-id" });
Biến môi trường
export GCLOUD_PROJECT="your-project-id"

Nhập và xuất dữ liệu

Trình mô phỏng cơ sở dữ liệu và Cloud Storage for Firebase cho phép bạn xuất dữ liệu từ một phiên bản trình mô phỏng đang chạy. Xác định một tập hợp dữ liệu cơ sở để sử dụng trong các quy trình kiểm thử đơn vị hoặc tích hợp liên tục, sau đó xuất dữ liệu đó để chia sẻ giữa các thành viên trong nhóm.

firebase emulators:export ./dir

Trong các bài kiểm thử, khi khởi động trình mô phỏng, hãy nhập dữ liệu cơ sở.

firebase emulators:start --import=./dir

Bạn có thể hướng dẫn trình mô phỏng xuất dữ liệu khi tắt, bằng cách chỉ định đường dẫn xuất hoặc chỉ cần sử dụng đường dẫn được truyền đến cờ --import.

firebase emulators:start --import=./dir --export-on-exit

Các tuỳ chọn nhập và xuất dữ liệu này cũng hoạt động với lệnh firebase emulators:exec. Để biết thêm thông tin, hãy tham khảo tài liệu tham khảo về lệnh trình mô phỏng .

Sự khác biệt giữa trình mô phỏng Cloud Storage for Firebase và môi trường sản xuất

Đối với việc kiểm thử các ứng dụng máy khách, trình mô phỏng Cloud Storage for Firebase gần như hoàn toàn phù hợp với môi trường sản xuất về diện tích bề mặt API Firebase. Tất cả các lệnh Firebase đều dự kiến hoạt động giữa các SDK Firebase thông thường (Web, Android và Apple).

Đối với việc kiểm thử các ứng dụng phía máy chủ, có một số hạn chế. SDK của Firebase dành cho quản trị viên sử dụng diện tích bề mặt API Google Cloudvà không phải tất cả các điểm cuối của API này đều được mô phỏng. Theo nguyên tắc chung, mọi thứ có thể thực hiện được từ các SDK máy khách (tải tệp lên hoặc xoá tệp, nhận và thiết lập siêu dữ liệu) cũng được triển khai để sử dụng từ các SDK dành cho quản trị viên, nhưng mọi thứ khác đều không được triển khai. Các trường hợp loại trừ đáng chú ý được liệt kê bên dưới.

Sự khác biệt so với Google Cloud Storage

Sản phẩm Cloud Storage for Firebase, bao gồm cả trình mô phỏng Storage, cung cấp một tập hợp con các chức năng của Google Cloud Storage (GCS) tập trung vào các đối tượng lưu trữ rất hữu ích cho việc phát triển các ứng dụng Firebase. Cloud Storage for Firebase khác với GCS theo những cách sau:

  • Cloud Storage for Firebase hiện không hỗ trợ các API Bucket để tạo, liệt kê, nhận hoặc xoá bộ chứa lưu trữ.
  • Từ API Đối tượng Google Cloud Storage, các phương thức sau được hỗ trợ: copy, delete, get, insert, list, patch, rewrite, update.

Cloud IAM

Bộ công cụ mô phỏng Firebase không cố gắng sao chép hoặc tuân thủ bất kỳ hành vi nào liên quan đến IAM để chạy. Trình mô phỏng tuân thủ Quy tắc bảo mật Firebase được cung cấp, nhưng trong những trường hợp mà IAM thường được sử dụng, chẳng hạn như để thiết lập tài khoản dịch vụ gọi Cloud Functions và do đó là các quyền, trình mô phỏng không thể định cấu hình và sẽ sử dụng tài khoản có sẵn trên toàn cầu trên máy dành cho nhà phát triển của bạn, tương tự như việc chạy trực tiếp một tập lệnh cục bộ.

Thông báo Pub/Sub

Trình mô phỏng Cloud Storage for Firebase không tích hợp với trình mô phỏng Cloud Pub/Sub và do đó không hỗ trợ việc tạo kênh/thông báo cho các thay đổi đối tượng lưu trữ. Bạn nên sử dụng trực tiếp các trình kích hoạt Storage Cloud Functions

Siêu dữ liệu ở cấp nhóm

Trình mô phỏng Cloud Storage for Firebase không hỗ trợ bất kỳ cấu hình nào ở cấp nhóm bao gồm cả lớp lưu trữ, cấu hình CORS ở cấp nhóm, nhãn hoặc chính sách giữ lại. Firebase dự định sẽ cải thiện khả năng hỗ trợ này theo thời gian.

Bước tiếp theo?

  • Để xem một tập hợp video được tuyển chọn và các ví dụ chi tiết về cách thực hiện, hãy theo dõi Danh sách phát đào tạo về trình mô phỏng Firebase.
  • Vì các hàm được kích hoạt là một hoạt động tích hợp điển hình với Cloud Storage for Firebase, hãy tìm hiểu thêm về trình mô phỏng Cloud Functions for Firebase tại Chạy hàm cục bộ.