Trước khi kết nối ứng dụng của bạn với Bộ lưu trữ đám mây cho trình giả lập Firebase, hãy đảm bảo rằng bạn hiểu toàn bộ quy trình làm việc của Bộ giả lập cục bộ Firebase cũng như bạn cài đặt và định cấu hình Bộ giả lập cục bộ cũng như xem lại các lệnh CLI của nó.
Chọn một dự án Firebase
Bộ giả lập 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 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 từng lệnh giả lập.
Bộ giả lập cục bộ 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ể thông qua bảng điều khiển Firebase). 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, bộ chứa 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, bộ chứa 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 phòng thí nghiệm 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ố | 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 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 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 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 (sản xuất) không được mô phỏng, thì sẽ không có khả năng thay đổi dữ liệu, cách 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.
Cung cấp ứ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à Web SDK
Thiết lập các lớp thử nghiệm hoặc cấu hình trong ứng dụng của bạn để tương tác với Bộ lưu trữ đám mây cho trình mô phỏng 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 do Cloud Storage kích hoạt cho các sự kiện Firebase bằng trình giả lập. Khi cả bộ giả lập Cloud Storage cho Firebase và Cloud Function đều đang 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 Bộ lưu trữ đám mây dành cho trình giả lập 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 giả lập Cloud Functions tự động nhận biết được Cloud Storage cho trình giả lập Firebase, vì vậy bạn có thể bỏ qua bước này khi thử nghiệm tích hợp giữa Cloud Functions và Cloud Storage cho trình giả lập Firebase. Biến môi trường sẽ tự động được đặt cho SDK quản trị trong Cloud Storage cho Firebase.
Nếu bạn muốn mã SDK quản trị của mình kết nối với trình mô phỏng được chia sẻ đang chạy trong một 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 trực tiếp ID dự án để 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ộ nhớ đám mây dành cho trình giả lập Firebase cho phép bạn xuất dữ liệu từ phiên bản trình giả lập đ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 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 nhập và xuất dữ liệu này cũng hoạt động với 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 giả lập .
Trình giả lập Cloud Storage cho Firebase khác với sản xuất như thế nào
Để thử nghiệm các ứng dụng khách, bộ giả lập Cloud Storage cho Firebase phù hợp với quá trình sản xuất gần như hoàn hảo đối với 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ủ, tồn tại các giới hạn. SDK quản trị Firebase sử dụng bề mặt 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 thứ có thể được thực hiện từ SDK máy khách (tải lên hoặc xóa tệp, nhận và đặt siêu dữ liệu) cũng được triển khai để sử dụng từ SDK quản trị, nhưng mọi thứ khác thì không. Các loại trừ đáng chú ý được liệt kê dưới đây.
Sự khác biệt từ Google Cloud Storage
Sản phẩm Cloud Storage cho Firebase, bao gồm cả trình giả lập 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. Lưu trữ đám mây cho Firebase khác với GCS ở những điểm sau:
- Lưu trữ đám mây cho Firebase hiện không hỗ trợ API
Bucket
để tạo, liệt kê, nhận hoặc xóa bộ chứa lưu trữ. - Từ Google Cloud Storage Objects API , các phương pháp sau được hỗ trợ:
copy
,delete
,get
,insert
,list
,patch
,rewrite
,update
.
IAM đám mây
Bộ giả lập 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 để 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 trường hợp thường sử dụng IAM, 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ác quyền, trình giả lập 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 tập lệnh cục bộ trực tiếp.
Thông báo Pub/Sub
Trình giả lập Cloud Storage cho Firebase 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 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 giả lập 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 lớp lưu trữ, cấu hình CORS cấp bộ chứa, 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ì?
- Để có bộ video được tuyển chọn và các ví dụ hướng dẫn chi tiết, hãy làm theo Danh sách phát đào tạo về trình giả lập Firebase .
- Vì các chức năng được kích hoạt là một tích hợp điển hình với Lưu trữ đám mây cho Firebase, nên hãy tìm hiểu thêm về trình mô phỏng Chức năng đám mây cho Firebase tại Chạy chức năng cục bộ .