เชื่อมต่อแอปของคุณกับโปรแกรมจำลองฐานข้อมูลแบบเรียลไทม์

ก่อนที่จะเชื่อมต่อแอปของคุณกับโปรแกรมจำลองฐานข้อมูลเรียลไทม์ ตรวจสอบให้แน่ใจว่าคุณ เข้าใจเวิร์กโฟลว์ Firebase Local Emulator Suite โดยรวม และคุณ ได้ติดตั้งและกำหนด ค่า Local Emulator Suite และตรวจสอบ คำสั่ง CLI ของชุดดัง กล่าว

เลือกโปรเจ็กต์ Firebase

Firebase Local Emulator Suite จำลองผลิตภัณฑ์สำหรับโปรเจ็กต์ Firebase เดียว

หากต้องการเลือกโปรเจ็กต์ที่จะใช้ ก่อนที่คุณจะเริ่มโปรแกรมจำลอง ใน CLI ให้เรียก firebase use ในไดเร็กทอรีการทำงานของคุณ หรือคุณสามารถส่งแฟล็ก --project ไปยังคำสั่งอีมูเลเตอร์แต่ละคำสั่งได้

Local Emulator Suite รองรับการจำลองโปรเจ็กต์ Firebase จริง และโปรเจ็กต์ สาธิต

ประเภทโครงการ คุณสมบัติ ใช้กับโปรแกรมจำลอง
จริง

โปรเจ็กต์ Firebase จริงคือโปรเจ็กต์ที่คุณสร้างและกำหนดค่า (ส่วนใหญ่จะผ่านคอนโซล Firebase)

โปรเจ็กต์จริงมีทรัพยากรที่ใช้งานจริง เช่น อินสแตนซ์ฐานข้อมูล ที่เก็บข้อมูล ฟังก์ชัน หรือทรัพยากรอื่นใดที่คุณตั้งค่าไว้สำหรับโปรเจ็กต์ Firebase นั้น

เมื่อทำงานกับโปรเจ็กต์ Firebase จริง คุณสามารถเรียกใช้โปรแกรมจำลองสำหรับผลิตภัณฑ์ที่รองรับรายการใดรายการหนึ่งหรือทั้งหมดได้

สำหรับผลิตภัณฑ์ใดๆ ที่คุณไม่ได้เลียนแบบ แอปและโค้ดของคุณจะโต้ตอบกับทรัพยากร ที่ใช้งานจริง (อินสแตนซ์ฐานข้อมูล บัคเก็ตพื้นที่จัดเก็บ ฟังก์ชัน ฯลฯ)

การสาธิต

โปรเจ็กต์ Firebase สาธิตไม่มีการกำหนดค่า Firebase จริง และไม่มีทรัพยากรที่ใช้งานอยู่ โดยปกติจะเข้าถึงโปรเจ็กต์เหล่านี้ได้ผ่านทาง Codelab หรือบทช่วยสอนอื่นๆ

รหัสโครงการสำหรับโครงการสาธิตต้องมีคำนำหน้า demo-

เมื่อทำงานกับโปรเจ็กต์ Firebase สาธิต แอปและโค้ดของคุณจะโต้ตอบกับโปรแกรมจำลอง เท่านั้น หากแอปของคุณพยายามโต้ตอบกับทรัพยากรที่โปรแกรมจำลองไม่ได้ทำงานอยู่ โค้ดนั้นจะล้มเหลว

เราขอแนะนำให้คุณใช้โครงการสาธิตทุกครั้งที่เป็นไปได้ สิทธิประโยชน์ ได้แก่:

  • ตั้งค่าได้ง่ายขึ้น เนื่องจากคุณสามารถเรียกใช้โปรแกรมจำลองได้โดยไม่ต้องสร้างโปรเจ็กต์ Firebase เลย
  • ความปลอดภัยที่แข็งแกร่งยิ่งขึ้น เนื่องจากหากโค้ดของคุณเรียกใช้ทรัพยากรที่ไม่จำลอง (การผลิต) โดยไม่ได้ตั้งใจ จะไม่มีโอกาสเกิดการเปลี่ยนแปลงข้อมูล การใช้งาน และการเรียกเก็บเงิน
  • รองรับออฟไลน์ได้ดียิ่งขึ้น เนื่องจากไม่จำเป็นต้องเข้าถึงอินเทอร์เน็ตเพื่อดาวน์โหลดการกำหนดค่า SDK ของคุณ

ติดตั้งแอปของคุณเพื่อพูดคุยกับโปรแกรมจำลอง

Android, แพลตฟอร์ม Apple และ Web SDK

ตั้งค่าการกำหนดค่าในแอปหรือคลาสการทดสอบเพื่อโต้ตอบกับฐานข้อมูลเรียลไทม์ดังนี้

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 database = Firebase.database
database.useEmulator("10.0.2.2", 9000)
Java
// 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);
สวิฟท์
    // In almost all cases the ns (namespace) is your project ID.
let db = Database.database(url:"http://127.0.0.1:9000?ns=YOUR_DATABASE_NAMESPACE")

Web modular API

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

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

Web namespaced API

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

ไม่จำเป็นต้องตั้งค่าเพิ่มเติมเพื่อทดสอบฟังก์ชันคลาวด์ ที่ทริกเกอร์โดยเหตุการณ์ฐานข้อมูลเรียลไทม์ โดยใช้โปรแกรมจำลอง เมื่อทั้งฐานข้อมูลเรียลไทม์และโปรแกรมจำลองฟังก์ชันคลาวด์ทำงานอยู่ ทั้งสองโปรแกรมจะทำงานร่วมกันโดยอัตโนมัติ

SDK ผู้ดูแลระบบ

Firebase Admin SDK จะเชื่อมต่อกับโปรแกรมจำลองฐานข้อมูลเรียลไทม์โดยอัตโนมัติเมื่อมีการตั้งค่าตัวแปรสภาพแวดล้อม FIREBASE_DATABASE_EMULATOR_HOST :

export FIREBASE_DATABASE_EMULATOR_HOST="127.0.0.1:9000"

หากโค้ดของคุณทำงานอยู่ในโปรแกรมจำลอง Cloud Functions รหัสโปรเจ็กต์ของคุณและการกำหนดค่าอื่นๆ จะถูกตั้งค่าโดยอัตโนมัติเมื่อเรียกใช้ initializeApp

หากคุณต้องการให้โค้ด Admin SDK เชื่อมต่อกับโปรแกรมจำลองที่ใช้ร่วมกันที่ทำงานในสภาพแวดล้อมอื่น คุณจะต้องระบุ รหัสโปรเจ็กต์เดียวกันกับที่คุณตั้งค่าโดยใช้ Firebase CLI คุณสามารถส่งรหัสโปรเจ็กต์เพื่อ initializeApp โดยตรง หรือตั้งค่าตัวแปรสภาพแวดล้อม GCLOUD_PROJECT

SDK ผู้ดูแลระบบ Node.js
admin.initializeApp({ projectId: "your-project-id" });
ตัวแปรสภาพแวดล้อม
export GCLOUD_PROJECT="your-project-id"

ล้างฐานข้อมูลของคุณระหว่างการทดสอบ

หากต้องการล้างฐานข้อมูลเรียลไทม์ระหว่างกิจกรรม คุณสามารถล้างการอ้างอิงฐานข้อมูลได้ คุณสามารถใช้วิธีนี้เป็นทางเลือกแทนการปิดกระบวนการจำลองได้

Kotlin+KTX
// With a DatabaseReference, write null to clear the database.
database.reference.setValue(null)
Java
// With a DatabaseReference, write null to clear the database.
database.getReference().setValue(null);
สวิฟท์
// With a DatabaseReference, write nil to clear the database.
    Database.database().reference().setValue(nil);

Web modular API

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

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

โดยปกติแล้ว รหัสของคุณควรรอการยืนยันว่าการฟลัชเสร็จสิ้นหรือล้มเหลวโดยใช้คุณสมบัติการจัดการเหตุการณ์แบบอะซิงโครนัสของแพลตฟอร์มของคุณ

เมื่อดำเนินการตามขั้นตอนเช่นนี้แล้ว คุณสามารถจัดลำดับการทดสอบและทริกเกอร์ฟังก์ชันของคุณได้อย่างมั่นใจว่าข้อมูลเก่าจะถูกล้างข้อมูลระหว่างการรัน และคุณกำลังใช้การกำหนดค่าการทดสอบพื้นฐานใหม่

นำเข้าและส่งออกข้อมูล

ฐานข้อมูลและ Cloud Storage สำหรับโปรแกรมจำลอง Firebase ช่วยให้คุณสามารถส่งออกข้อมูลจากอินสแตนซ์โปรแกรมจำลองที่ทำงานอยู่ได้ กำหนดชุดข้อมูลพื้นฐานเพื่อใช้ในการทดสอบหน่วยหรือเวิร์กโฟลว์การรวมอย่างต่อเนื่อง จากนั้นส่งออกข้อมูลเพื่อแชร์ระหว่างทีม

firebase emulators:export ./dir

ในการทดสอบ เมื่อเริ่มต้นโปรแกรมจำลอง ให้นำเข้าข้อมูลพื้นฐาน

firebase emulators:start --import=./dir

คุณสามารถสั่งให้โปรแกรมจำลองส่งออกข้อมูลเมื่อปิดเครื่อง โดยระบุเส้นทางการส่งออกหรือเพียงแค่ใช้เส้นทางที่ส่งไปยังแฟล็ก --import

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

ตัวเลือกการนำเข้าและส่งออกข้อมูลเหล่านี้ทำงานร่วมกับคำสั่ง firebase emulators:exec ได้เช่นกัน สำหรับข้อมูลเพิ่มเติม โปรดดูที่ การอ้างอิงคำสั่งโปรแกรมจำลอง

แสดงภาพกิจกรรมกฎความปลอดภัย

ขณะที่คุณทำงานผ่านต้นแบบและลูปทดสอบ คุณจะใช้เครื่องมือแสดงภาพและรายงานที่ Local Emulator Suite มอบให้ได้

แสดงภาพการประเมินกฎ

เมื่อคุณเพิ่มกฎความปลอดภัยลงในต้นแบบ คุณจะแก้ไขจุดบกพร่องเหล่านั้นได้ด้วยเครื่องมือ Local Emulator Suite

หลังจากเรียกใช้ชุดการทดสอบ คุณจะสามารถเข้าถึงรายงานความครอบคลุมของการทดสอบที่แสดงให้เห็นว่ากฎแต่ละข้อของคุณได้รับการประเมินอย่างไร หากต้องการรับรายงาน ให้ค้นหาปลายทางที่เปิดเผยบนโปรแกรมจำลองขณะที่เครื่องกำลังทำงานอยู่ สำหรับเวอร์ชันที่เหมาะกับเบราว์เซอร์ ให้ใช้ URL ต่อไปนี้:

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

ซึ่งจะแบ่งกฎของคุณเป็นนิพจน์และนิพจน์ย่อยที่คุณสามารถวางเมาส์ไว้เพื่อดูข้อมูลเพิ่มเติม รวมถึงจำนวนการดำเนินการและค่าที่ส่งคืน สำหรับข้อมูลเวอร์ชัน JSON แบบดิบ ให้รวม URL ต่อไปนี้ในการสืบค้นของคุณ:

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

อะไรต่อไป?