Catch up on everything announced at Firebase Summit, and learn how Firebase can help you accelerate app development and run your app with confidence. Learn More

Kết nối ứng dụng của bạn với Trình mô phỏng cơ sở dữ liệu thời gian thực

Sử dụng bộ sưu tập để sắp xếp ngăn nắp các trang Lưu và phân loại nội dung dựa trên lựa chọn ưu tiên của bạn.

Trước khi kết nối ứng dụng của bạn với trình giả lập Cơ sở dữ liệu thời gian thực, 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
Có thậ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 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 không được mô phỏng (sản xuất), 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 của bạn hoặc các lớp thử nghiệm để tương tác với Cơ sở dữ liệu thời gian thực như sau.

Android
        // 10.0.2.2 is the special IP address to connect to the 'localhost' of
        // the host computer from an Android emulator.
        FirebaseDatabase database = FirebaseDatabase.getInstance();
        database.useEmulator("10.0.2.2", 9000);
Nhanh
    // In almost all cases the ns (namespace) is your project ID.
let db = Database.database(url:"http://localhost:9000?ns=YOUR_DATABASE_NAMESPACE")

Web version 9

import { getDatabase, connectDatabaseEmulator } from "firebase/database";

const db = getDatabase();
if (location.hostname === "localhost") {
  // Point to the RTDB emulator running on localhost.
  connectDatabaseEmulator(db, "localhost", 9000);
} 

Web version 8

var db = firebase.database();
if (location.hostname === "localhost") {
  // Point to the RTDB emulator running on localhost.
  db.useEmulator("localhost", 9000);
} 

Không cần thiết lập bổ sung để kiểm tra Chức năng đám mây được kích hoạt bởi các sự kiện Cơ sở dữ liệu thời gian thực bằng trình mô phỏng. Khi cả hai trình giả lập Cơ sở dữ liệu thời gian thực và Chức năng đám mây đ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ị Firebase tự động kết nối với trình mô phỏng Cơ sở dữ liệu thời gian thực khi biến môi trường FIREBASE_DATABASE_EMULATOR_HOST được đặt:

export FIREBASE_DATABASE_EMULATOR_HOST="localhost:9000"

Nếu mã của bạn đang chạy bên trong trình giả lập Chức năng đám mây, ID dự án và cấu hình khác của bạn sẽ được tự động đặt khi gọi initalizeApp .

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 mô phỏng dùng chung đang 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"

Xóa cơ sở dữ liệu của bạn giữa các lần kiểm tra

Để xóa Cơ sở dữ liệu thời gian thực giữa các hoạt động, bạn có thể xóa tham chiếu cơ sở dữ liệu. Bạn có thể sử dụng phương pháp này để thay thế cho việc tắt quá trình giả lập.

Android
// With a DatabaseReference, write null to clear the database.
database.getReference().setValue(null);
Nhanh
// With a DatabaseReference, write nil to clear the database.
    Database.database().reference().setValue(nil);

Web version 9

import { getDatabase, ref, set } from "firebase/database";

// With a database Reference, write null to clear the database.
const db = getDatabase();
set(ref(db), null);

Web version 8

// With a database Reference, write null to clear the database.
firebase.database().ref().set(null);

Đương nhiên, mã của bạn sẽ chờ xác nhận rằng quá trình xả đã hoàn thành hoặc không thành công bằng cách sử dụng các tính năng xử lý sự kiện không đồng bộ của nền tảng của bạn.

Sau khi triển khai một bước như thế này, bạn có thể trình tự các thử nghiệm và kích hoạt các chức năng của mình với sự tự tin rằng dữ liệu cũ sẽ được xóa giữa các lần chạy và bạn đang sử dụng cấu hình thử nghiệm cơ sở mới.

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

Cơ sở dữ liệu và Lưu trữ đám mây cho trình giả lập 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 hợp dữ liệu cơ bản để sử dụng trong các bài kiểm tra đơn vị của bạn hoặc quy trình công 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 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 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 lệnh execute. Để biết thêm, hãy tham khảo tham chiếu lệnh giả lập .

Trực quan hóa hoạt động Quy tắc bảo mật

Khi bạn làm việc qua các vòng lặp thử nghiệm và nguyên mẫu, bạn có thể sử dụng các công cụ trực quan hóa và báo cáo được cung cấp bởi Local Emulator Suite.

Trực quan hóa đánh giá Quy tắc

Khi bạn thêm Quy tắc bảo mật vào nguyên mẫu của mình, bạn có thể gỡ lỗi chúng bằng các công cụ Local Emulator Suite.

Sau khi chạy một bộ thử nghiệm, bạn có thể truy cập báo cáo phạm vi thử nghiệm cho biết từng quy tắc của bạn được đánh giá như thế nào. Để nhận các báo cáo, hãy truy vấn một điểm cuối được tiếp xúc trên trình giả lập khi nó đang chạy. Đối với phiên bản thân thiện với trình duyệt, hãy sử dụng URL sau:

http://localhost:9000/.inspect/coverage?ns=<database_name>

Điều này phá vỡ các quy tắc của bạn thành các biểu thức và biểu thức con mà bạn có thể di chuột qua để biết thêm thông tin, bao gồm số lần thực thi và các giá trị được trả về. Đối với phiên bản JSON thô của dữ liệu này, hãy bao gồm URL sau trong truy vấn của bạn:

http://localhost:9000/.inspect/coverage.json?ns=<database_name>

Tiếp theo là gì?