Kết nối ứng dụng của bạn với Bộ lưu trữ đám mây cho Trình mô phỏng Firebase

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

Chọn dự án Firebase

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

Để chọn dự án sẽ sử dụng, trước khi bạn khởi động trình mô phỏng, hãy chạy firebase use trong thư mục làm việc của bạn. Hoặc bạn có thể chuyển cờ --project cho mỗi lệnh trình mô phỏng.

Local Emulator Suite hỗ trợ mô phỏng các dự án Firebase thực và các dự án demo .

Loại dự án Đặc trưng Sử dụng với trình giả lập
Thực tế

Dự án Firebase thực sự là dự án 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, 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 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ữ, chức năng, v.v.).

Thử nghiệm

Dự án Firebase demo 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 các lớp học lập trình hoặc các hướng dẫn khác.

ID dự án cho các dự án demo có tiền tố demo- .

Khi làm việc với các dự án Firebase demo, ứ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 tài nguyên mà trình mô phỏng không chạy thì mã đó sẽ không thành công.

Chúng tôi khuyên bạn nên sử dụng các dự án demo bất cứ khi nào có thể. 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
  • 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 (sản xuất) không được mô phỏng thì sẽ không có cơ hội thay đổi dữ liệu, 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 xuống cấu hình SDK của bạn.

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

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

Thiết lập cấu hình trong ứng dụng hoặc các lớp kiểm tra của bạn để 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);
Nhanh
Storage.storage().useEmulator(withHost: "127.0.0.1", port: 9199)

Web modular API

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 namespaced API

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

Không cần thiết lập bổ sung để kiểm tra các chức năng Đám mây được kích hoạt bởi Cloud Storage cho các sự kiện Firebase bằng trình mô phỏng. Khi cả trình mô phỏng Cloud Storage cho Firebase và Cloud Functions đều chạy, chúng sẽ tự động hoạt động cùng nhau.

SDK quản trị

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

export FIREBASE_STORAGE_EMULATOR_HOST="127.0.0.1:9199"

Lưu ý rằng trình mô phỏng Cloud Functions tự động nhận biết trình mô phỏng Cloud Storage cho Firebase nên bạn có thể bỏ qua bước này khi kiểm tra sự tích hợp giữa Cloud Functions và Cloud Storage cho trình mô phỏng Firebase. Biến môi trường sẽ được đặt tự động 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 trình mô phỏng dùng chung chạy trong môi trường khác, bạn sẽ cần chỉ định cùng một ID dự án mà bạn đã đặt bằng Firebase CLI . Bạn có thể chuyển ID dự án trực tiếp tới initializeApp hoặc đặt biến môi trường GCLOUD_PROJECT .

SDK quản trị 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à Bộ lưu trữ đám mây dành cho trình mô phỏng 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 bộ dữ liệu cơ sở để sử dụng trong các bài kiểm tra đơn vị hoặc quy trình tích hợp liên tục của bạn, sau đó xuất dữ liệu đó để chia sẻ giữa nhóm.

firebase emulators:export ./dir

Trong các thử nghiệm, 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, chỉ định đường dẫn xuất hoặc chỉ sử dụng đường dẫn được chuyển đến cờ --import .

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

Các tùy 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, hãy tham khảo tài liệu tham khảo lệnh mô phỏng .

Trình mô phỏng Cloud Storage cho Firebase khác với phiên bản sản xuất như thế nào

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

Để thử nghiệm các ứng dụng phía máy chủ, có những hạn chế. SDK quản trị Firebase sử dụng bề mặt API của Google Cloud 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 nguyên tắc chung, mọi thao tác có thể được thực hiện từ SDK khách (tải lên hoặc xóa tệp, nhận và cài đặt siêu dữ liệu) cũng được triển khai để sử dụng từ SDK quản trị, nhưng bất kỳ thao tác nào khác thì không. Các trường hợp loại trừ đáng chú ý được liệt kê dưới đây.

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

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

  • Cloud Storage cho Firebase hiện không hỗ trợ API Bucket để tạo, liệt kê, nhận hoặc xóa nhóm lưu trữ.
  • Từ API đối tượng lưu trữ đám mây của Google , các phương pháp sau được hỗ trợ: copy , delete , get , insert , liệt list , patch , rewrite , update .

Đám mây IAM

Bộ mô phỏng Firebase không cố gắng sao chép hoặc tôn trọng bất kỳ hành vi nào liên quan đến IAM khi 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 các trường hợp IAM thường được sử dụng, chẳng hạn như để đặt tài khoản dịch vụ gọi Chức năng đám mây và do đó 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 nhà phát triển của bạn, tương tự như chạy trực tiếp 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 và do đó không hỗ trợ tạo kênh/thông báo về các thay đổi đối tượng lưu trữ. Chúng tôi khuyên bạn nên sử dụng trực tiếp trình kích hoạt Lưu trữ Chức năng Đám mây.

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

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

Tiếp theo là gì?