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 của bạn với trình mô phỏng Cloud Storage cho Firebase, hãy đảm bảo rằng bạn nắm rõ quy trình công việc tổng thể của Bộ mô phỏng cục bộ của Firebase, đồng thời cài đặt và định cấu hình Bộ mô phỏng cục bộ 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

Bộ công cụ mô phỏng cục bộ Firebase mô phỏng các sản phẩm cho một dự án Firebase duy nhất.

Để chọn dự án sẽ sử dụng, trước khi bạn khởi động trình mô phỏng, trong CLI, hãy chạy firebase use trong thư mục đang hoạt động của bạn. Bạn cũng có thể chuyển cờ --project vào từng lệnh của trình mô phỏng.

Bộ công cụ mô phỏng cục bộ hỗ trợ việc mô phỏng các dự án Firebase thực và các dự án minh hoạ.

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 tế là dự án do bạn tạo và định cấu hình (nhiều khả năng là thông qua bảng điều khiển của Firebase).

Các dự án thực tế có tài nguyên trực tiếp, chẳng hạn như các phiên bản cơ sở dữ liệu, bộ chứa bộ nhớ, 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 tế, bạn có thể chạy trình mô phỏng cho bất kỳ hoặc tất cả sản phẩm được hỗ trợ.

Đối với bất kỳ sản phẩm nào 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 (thực thể cơ sở dữ liệu, bộ chứa lưu trữ, hàm, v.v.).

Bản trình diễn

Dự án Firebase minh hoạ không có cấu hình Firebase thực và không có tài nguyên trực tiếp. Những dự án này thường được truy cập thông qua lớp học lập trình hoặc các hướng dẫn khác.

Mã dự án của các dự án minh hoạ có tiền tố demo-.

Khi làm việc với các dự án Firebase minh hoạ, ứng dụng và mã của bạn chỉ tương tác với trình mô phỏng. 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 minh hoạ bất cứ khi nào có thể. Các lợi ích bao gồm:

  • Thiết lập dễ dàng hơn vì bạn có thể chạy trình mô phỏng mà không cần tạo dự án Firebase
  • Mức độ an toàn cao 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 (chính thức), 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ì không cần truy cập Internet để tải cấu hình SDK xuống.

Đo lường ứng dụng của bạn để trò chuyện với trình mô phỏng

Nền tảng Android, Apple và SDK web

Bạn có thể 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 cho Firebase như sau.

Kotlin+KTX
// 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ử các chức năng của Cloud do các sự kiện Cloud Storage cho Firebase kích hoạt bằng trình mô phỏng. Khi cả hai trình mô phỏng Cloud Storage cho Firebase và Cloud Functions đang chạy, chúng sẽ tự động hoạt động cùng nhau.

SDK dành cho quản trị viên

SDK quản trị của Firebase tự động kết nối với trình mô phỏng Cloud Storage cho Firebase khi bạn đặt biến môi trường FIREBASE_STORAGE_EMULATOR_HOST:

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 được trình mô phỏng Cloud Storage cho Firebase, vì vậy, bạn có thể bỏ qua bước này khi kiểm thử hoạt động tích hợp giữa các trình mô phỏng Cloud Functions và Cloud Storage dành cho Firebase. Biến môi trường sẽ được tự động đặt cho SDK quản trị trong Cloud Storage cho Firebase.

Nếu muốn mã SDK quản trị của mình kết nối với một trình mô phỏng dùng chung 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 đã đặt bằng giao diện dòng lệnh (CLI) của Firebase. Bạn có thể truyền trực tiếp mã dự án đến initializeApp hoặc đặt 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

Cơ sở dữ liệu và trình mô phỏng Cloud Storage cho 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 tập dữ liệu cơ sở để sử dụng trong các kiểm thử đơn vị hoặc quy trình tích hợp liên tục, sau đó xuất tập dữ liệu đó để chia sẻ trong nhóm.

firebase emulators:export ./dir

Trong các chương trình 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 máy, bằng cách chỉ định đường dẫn xuất hoặc đơn giản là 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 cho Firebase và phiên bản phát hành công khai

Để kiểm thử các ứng dụng, trình mô phỏng Cloud Storage cho Firebase điều chỉnh gần như hoàn hảo cho phiên bản phát hành công khai về khu vực nền tảng API Firebase. Tất cả các lệnh của Firebase dự kiến sẽ hoạt động giữa các SDK Firebase thông thường (nền tảng Web, Android và Apple).

Có một số hạn chế đối với việc kiểm thử ứng dụng phía máy chủ. SDK quản trị của Firebase sử dụng nền tảng Google Cloud API và không phải tất cả các điểm cuối của API này đều được mô phỏng. Theo quy tắc chung, mọi việc có thể thực hiện được từ SDK ứng dụng (tải 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ừ SDK quản trị, nhưng mọi thao tác khác thì không. Dưới đây là các trường hợp loại trừ đáng chú ý.

Điểm khác biệt với Google Cloud Storage

Sản phẩm Cloud Storage cho Firebase (bao gồm cả trình mô phỏng bộ nhớ) cung cấp một số 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 cho Firebase khác GCS ở những điểm sau:

  • Cloud Storage cho Firebase hiện không hỗ trợ các API Bucket để tạo, liệt kê, tải hoặc xoá bộ chứa lưu trữ.
  • Trong 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ộ mô phỏng Firebase không tìm cách sao chép hoặc tuân theo bất kỳ hành vi nào liên quan đến IAM để chạy. Trình mô phỏng tuân thủ các 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à theo đó, bạn không thể định cấu hình trình mô phỏng và sẽ sử dụng tài khoản có sẵn trên toàn cầu trên máy nhà phát triển của bạn, tương tự như 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 cho Firebase không tích hợp với trình mô phỏng Cloud Pub/Sub nên không hỗ trợ tạo kênh/thông báo cho những thay đổi về đối tượng lưu trữ. Bạn nên sử dụng trực tiếp các điều kiện kích hoạt Bộ nhớ của Cloud Functions.

Siêu dữ liệu cấp bộ chứa

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

Tiếp theo là gì?