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

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

Chọn một 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 duy nhất.

Để chọn dự án để sử dụng, trước khi bạn khởi động trình giả lập, trong CLI, 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 giả lập.

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

Các dự án thực có cá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, nhóm lưu trữ, chức năng 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 giả lập 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. Các dự án này thường được truy cập thông qua codelabs 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, các ứng dụng và mã của bạn chỉ tương tác với trình giả lập. 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 giả lập 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 giả lập 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ó 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.

Tạo công cụ cho ứng dụng của bạn để nói chuyện với trình giả lập

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 thử nghiệm của bạn để tương tác với trình giả lập Cloud Storage như sau.

Android
FirebaseStorage.getInstance().useEmulator('10.0.2.2', 9199);
Nhanh
Storage.storage().useEmulator(withHost:"localhost", port:9199)
Web v8
var storage = firebase.storage();
storage.useEmulator("localhost", 9199);
Web v9
import { getStorage, connectStorageEmulator } from "firebase/storage";

const storage = getStorage();
connectStorageEmulator(storage, "localhost", 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 các sự kiện Lưu trữ đám mây bằng trình mô phỏng. Khi cả hai trình giả lập Cloud Storage 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 dành cho quản trị viên Firebase tự động kết nối với trình mô phỏng Cloud Storage khi biến môi trường FIREBASE_STORAGE_EMULATOR_HOST được đặt:

export FIREBASE_STORAGE_EMULATOR_HOST="localhost:9199"

Lưu ý rằng trình giả lập Cloud Functions tự động nhận biết trình giả lập Cloud Storage, vì vậy bạn có thể bỏ qua bước này khi thử nghiệm tích hợp giữa các trình giả lập Cloud Functions và Cloud Storage. Biến môi trường sẽ được đặt tự động cho SDK quản trị trong Cloud Storage.

Nếu bạn muốn mã SDK quản trị viên của mình kết nối với trình giả lập 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 cách sử dụng Firebase CLI . Bạn có thể chuyển một ID dự án để initializeApp ứng dụng trực tiếp 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à trình giả lập Cloud Storage cho phép bạn xuất dữ liệu từ phiên bản giả lập đang chạy. Xác định tập hợp dữ liệu cơ sở để sử dụng trong các bài kiểm tra đơn vị của bạn hoặc quy trình làm việc tích hợp liên tục, sau đó xuất nó để chia sẻ giữa các nhóm.

firebase emulators:export ./dir

Trong các thử nghiệm, khi khởi động trình giả lập, hãy nhập dữ liệu cơ sở.

firebase emulators:start --import=./dir

Bạn có thể hướng dẫn trình giả lập xuất dữ liệu khi tắt máy, chỉ định đường dẫn xuất hoặc chỉ cần 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 xuất và nhập dữ liệu này cũng hoạt động với firebase emulators:exec lệnh execute. Để biết thêm, hãy tham khảo tham chiếu lệnh giả lập .

Trình giả lập Cloud Storage khác với phiên bản sản xuất như thế nào

Để thử nghiệm các ứng dụng khách, trình giả lập Cloud Storage phù hợp với sản xuất gần như hoàn hảo liên quan đến 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 các SDK Firebase thông thường (nền tảng Web, Android và Apple).

Đối với thử nghiệm các ứng dụng phía máy chủ, tồn tại những hạn chế. SDK dành cho quản trị viên Firebase sử dụng bề mặt API đám mây của Google 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, bất kỳ điều gì có thể được thực hiện từ SDK ứng dụng khách (tải lên hoặc xóa tệp, lấy 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 bất kỳ điều gì khác ngoài điều đó thì không. Các loại trừ đáng chú ý được liệt kê dưới đây.

Đám mây IAM

Firebase Emulator Suite 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 để chạy. Trình giả lập tuân thủ Quy tắc bảo mật Firebase được cung cấp, nhưng trong các tình huống mà IAM thường được sử dụng, chẳng hạn như để đặt Chức năng đám mây gọi tài khoản dịch vụ và do đó, 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ộ.

Pub / Sub thông báo

Trình giả lập Cloud Storage không tích hợp với trình giả lập Cloud Pub / Sub và do đó không hỗ trợ tạo kênh / thông báo cho 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 các trình kích hoạt Bộ nhớ Chức năng Đám mây.

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

Trình giả lập Cloud Storage 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 hỗ trợ này theo thời gian.

Tiếp theo là gì?