ก่อนที่จะเชื่อมต่อแอปกับโปรแกรมจำลอง Realtime Database โปรดตรวจสอบว่า คุณเข้าใจเวิร์กโฟลว์ 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 หรือ บทแนะนำอื่นๆ รหัสโปรเจ็กต์สำหรับโปรเจ็กต์สาธิตจะมี |
เมื่อทำงานกับโปรเจ็กต์ Firebase สาธิต แอปและโค้ดจะโต้ตอบกับ โปรแกรมจำลองเท่านั้น หากแอปพยายามโต้ตอบกับทรัพยากร ที่โปรแกรมจำลองไม่ได้ทำงานอยู่ โค้ดนั้นจะล้มเหลว |
เราขอแนะนำให้คุณใช้โปรเจ็กต์เดโมเมื่อเป็นไปได้ สิทธิประโยชน์มีดังนี้
- ตั้งค่าได้ง่ายขึ้น เนื่องจากคุณสามารถเรียกใช้โปรแกรมจำลองได้โดยไม่ต้องสร้าง โปรเจ็กต์ Firebase
- ปลอดภัยขึ้น เนื่องจากโค้ดของคุณเรียกใช้แบบไม่มีการจำลองโดยไม่ได้ตั้งใจ (เวอร์ชันที่ใช้งานจริง) จะไม่มีการเปลี่ยนแปลงข้อมูล การใช้งาน และการเรียกเก็บเงิน
- รองรับการใช้งานแบบออฟไลน์ได้ดีกว่า เนื่องจากไม่จำเป็นต้องเข้าอินเทอร์เน็ต ดาวน์โหลดการกำหนดค่า SDK
ใช้เครื่องดนตรีกับแอปเพื่อพูดคุยกับโปรแกรมจำลอง
Android, แพลตฟอร์ม Apple และเว็บ SDK
ตั้งค่าการกำหนดค่าในแอปหรือชั้นเรียนทดสอบเพื่อโต้ตอบกับ Realtime Database ดังนี้
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);
Swift
// 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
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
var db = firebase.database(); if (location.hostname === "localhost") { // Point to the RTDB emulator running on localhost. db.useEmulator("127.0.0.1", 9000); }
ไม่ต้องมีการตั้งค่าเพิ่มเติมเพื่อทดสอบ Cloud Functions ที่ทริกเกอร์โดยเหตุการณ์ Realtime Database โดยใช้โปรแกรมจำลอง เมื่อโปรแกรมจำลอง Realtime Database และ Cloud Functions ทั้งสองแบบจะทำงานร่วมกันโดยอัตโนมัติ
Admin SDK วินาที
Firebase Admin SDK จะเชื่อมต่อกับโปรแกรมจำลอง Realtime Database โดยอัตโนมัติเมื่อ
มีการตั้งค่าตัวแปรสภาพแวดล้อม FIREBASE_DATABASE_EMULATOR_HOST
ดังนี้
export FIREBASE_DATABASE_EMULATOR_HOST="127.0.0.1:9000"
หากโค้ดทำงานอยู่ภายในโปรแกรมจำลอง Cloud Functions รหัสโปรเจ็กต์ของคุณ
และการกำหนดค่าอื่นๆ จะได้รับการตั้งค่าโดยอัตโนมัติเมื่อเรียกใช้ initializeApp
หากต้องการให้รหัส Admin SDK เชื่อมต่อกับโปรแกรมจำลองที่แชร์ซึ่งทำงานอยู่
สภาพแวดล้อมอื่น คุณจะต้องระบุรหัสโปรเจ็กต์เดียวกันกับที่ตั้งค่าไว้โดยใช้ Firebase CLI
คุณสามารถส่งรหัสโปรเจ็กต์ไปยัง initializeApp
โดยตรง หรือตั้งค่า
ตัวแปรสภาพแวดล้อม GCLOUD_PROJECT
Admin SDK ของ Node.js
admin.initializeApp({ projectId: "your-project-id" });
ตัวแปรสภาพแวดล้อม
export GCLOUD_PROJECT="your-project-id"
ล้างฐานข้อมูลระหว่างการทดสอบ
หากต้องการล้าง Realtime Database ระหว่างกิจกรรม คุณสามารถล้างการอ้างอิงฐานข้อมูลได้ คุณสามารถใช้วิธีนี้เป็นทางเลือกนอกเหนือจากการปิดกระบวนการจำลอง
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);
Swift
// With a DatabaseReference, write nil to clear the database. Database.database().reference().setValue(nil);
Web
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
// With a database Reference, write null to clear the database. firebase.database().ref().set(null);
โดยปกติแล้ว โค้ดควรรอการยืนยันว่าการล้างเสร็จสิ้นหรือล้มเหลวในการใช้ฟีเจอร์การจัดการเหตุการณ์แบบไม่พร้อมกันของแพลตฟอร์ม
เมื่อใช้ขั้นตอนเช่นนี้ คุณจะเรียงลำดับการทดสอบและทริกเกอร์ฟังก์ชันได้อย่างมั่นใจว่าข้อมูลเก่าจะถูกลบถาวรระหว่างการเรียกใช้และคุณกำลังใช้การกำหนดค่าการทดสอบพื้นฐานใหม่
นำเข้าและส่งออกข้อมูล
ฐานข้อมูลและโปรแกรมจำลอง Cloud Storage for 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>
ฉันควรทำอย่างไรต่อไป
- หากต้องการดูชุดวิดีโอที่มีการดูแลจัดการและตัวอย่างวิธีการโดยละเอียด ให้ทำตามเพลย์ลิสต์การฝึกอบรมของ Firebase Emulators
- ตรวจสอบกรณีการใช้งานขั้นสูงที่เกี่ยวข้องกับการทดสอบกฎความปลอดภัยและ Firebase Test SDK: Test Security Rules (Realtime Database)
- เนื่องจากฟังก์ชันที่เรียกใช้เป็นการผสานรวมโดยทั่วไปกับ Realtime Database โปรดดู ข้อมูลเพิ่มเติมเกี่ยวกับโปรแกรมจำลอง Cloud Functions for Firebase ที่ เรียกใช้ฟังก์ชันในเครื่อง