ก่อนเชื่อมต่อแอปกับโปรแกรมจำลอง Cloud Storage for Firebase ให้ตรวจสอบว่าคุณเข้าใจเวิร์กโฟลว์โดยรวมของ Firebase Local Emulator Suite และติดตั้งและกำหนดค่า Local Emulator Suite รวมถึงตรวจสอบคําสั่ง CLI ของ Local Emulator Suite
เลือกโปรเจ็กต์ Firebase
Firebase Local Emulator Suite จะจําลองผลิตภัณฑ์สําหรับโปรเจ็กต์ Firebase โปรเจ็กต์เดียว
หากต้องการเลือกโปรเจ็กต์ที่จะใช้ ก่อนเริ่มโปรแกรมจำลอง ให้เรียกใช้ firebase use
ใน CLI ในไดเรกทอรีทํางาน หรือจะส่งผ่าน Flag --project
ไปยังคำสั่งของโปรแกรมจำลองแต่ละรายการก็ได้
Local Emulator Suite รองรับการจําลองโปรเจ็กต์ Firebase จริงและโปรเจ็กต์สาธิต
ประเภทโปรเจ็กต์ | ฟีเจอร์ | ใช้กับโปรแกรมจำลอง |
---|---|---|
จริง |
โปรเจ็กต์ Firebase จริงคือโปรเจ็กต์ที่คุณสร้างและกำหนดค่า (ส่วนใหญ่จะผ่านFirebaseคอนโซล) โปรเจ็กต์จริงมีทรัพยากรที่ใช้งานอยู่ เช่น อินสแตนซ์ฐานข้อมูลที่เก็บข้อมูล ฟังก์ชัน หรือทรัพยากรอื่นๆ ที่คุณตั้งค่าไว้สําหรับโปรเจ็กต์ Firebase นั้น |
เมื่อทํางานกับโปรเจ็กต์ Firebase จริง คุณสามารถเรียกใช้โปรแกรมจําลองสําหรับผลิตภัณฑ์ที่รองรับรายการใดรายการหนึ่งหรือทั้งหมด สำหรับผลิตภัณฑ์ที่คุณไม่ได้จําลอง แอปและโค้ดจะโต้ตอบกับทรัพยากรจริง (อินสแตนซ์ฐานข้อมูล ที่เก็บข้อมูล ฟังก์ชัน ฯลฯ) |
เดโม |
โปรเจ็กต์ Firebase สาธิตไม่มีการกำหนดค่า Firebase จริงและไม่มีทรัพยากรที่ใช้งานอยู่ โดยปกติแล้วโปรเจ็กต์เหล่านี้จะเข้าถึงได้ผ่าน Codelab หรือบทแนะนำอื่นๆ รหัสโปรเจ็กต์ของโปรเจ็กต์เดโมจะมีคำนำหน้า |
เมื่อใช้โปรเจ็กต์ Firebase สาธิต แอปและโค้ดจะโต้ตอบกับโปรแกรมจำลองเท่านั้น หากแอปพยายามโต้ตอบกับทรัพยากรที่อีมูเลเตอร์ไม่ได้ทำงานอยู่ โค้ดดังกล่าวจะใช้งานไม่ได้ |
เราขอแนะนำให้คุณใช้โปรเจ็กต์สาธิตทุกครั้งที่ทำได้ สิทธิประโยชน์มีดังนี้
- ตั้งค่าได้ง่ายขึ้นเนื่องจากคุณสามารถเรียกใช้โปรแกรมจำลองได้โดยไม่ต้องสร้างโปรเจ็กต์ Firebase
- ความปลอดภัยที่มากขึ้น เนื่องจากหากโค้ดเรียกใช้ทรัพยากรที่ไม่ใช่การจําลอง (เวอร์ชันที่ใช้งานจริง) โดยไม่ได้ตั้งใจ จะไม่มีการเปลี่ยนแปลงข้อมูล การใช้งาน และการเรียกเก็บเงิน
- รองรับการทำงานแบบออฟไลน์ได้ดียิ่งขึ้น เนื่องจากไม่จําเป็นต้องเข้าถึงอินเทอร์เน็ตเพื่อดาวน์โหลดการกําหนดค่า SDK
เครื่องมือวัดผลแอปเพื่อพูดคุยกับโปรแกรมจำลอง
แพลตฟอร์ม Android, Apple และ Web SDK
ตั้งค่าการกําหนดค่าในแอปหรือคลาสทดสอบเพื่อโต้ตอบกับโปรแกรมจำลอง Cloud Storage for Firebase ดังนี้
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);
Swift
Storage.storage().useEmulator(withHost: "127.0.0.1", port: 9199)
Web
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
var storage = firebase.storage(); if (location.hostname === "localhost") { // Point to the Storage emulator running on localhost. storage.useEmulator("127.0.0.1", 9199); }
คุณไม่จำเป็นต้องตั้งค่าเพิ่มเติมเพื่อทดสอบฟังก์ชัน Cloud ที่ทริกเกอร์โดยเหตุการณ์ Cloud Storage for Firebase ใช้โปรแกรมจำลอง เมื่อโปรแกรมจำลอง Cloud Storage for Firebase และ Cloud Functions ทำงานอยู่พร้อมกัน โปรแกรมจำลองจะทำงานร่วมกันโดยอัตโนมัติ
Admin SDK วินาที
Firebase Admin SDK จะเชื่อมต่อกับCloud Storage for Firebase Emulatorโดยอัตโนมัติเมื่อตั้งค่าตัวแปรสภาพแวดล้อม FIREBASE_STORAGE_EMULATOR_HOST
ดังนี้
export FIREBASE_STORAGE_EMULATOR_HOST="127.0.0.1:9199"
โปรดทราบว่าโปรแกรมจำลอง Cloud Functions จะรับรู้โปรแกรมจำลอง Cloud Storage for Firebase โดยอัตโนมัติ คุณจึงข้ามขั้นตอนนี้ได้เมื่อทดสอบการผสานรวมระหว่างโปรแกรมจำลอง Cloud Functions กับ Cloud Storage for Firebase ระบบจะตั้งค่าตัวแปรสภาพแวดล้อมโดยอัตโนมัติสําหรับ Admin SDK ใน Cloud Storage for Firebase
หากต้องการให้รหัส Admin SDK เชื่อมต่อกับโปรแกรมจำลองที่ใช้ร่วมกันซึ่งทำงานในสภาพแวดล้อมอื่น คุณจะต้องระบุรหัสโปรเจ็กต์เดียวกับที่คุณตั้งค่าโดยใช้ Firebase CLI
คุณสามารถส่งรหัสโปรเจ็กต์ไปยัง initializeApp
โดยตรงหรือตั้งค่าตัวแปรสภาพแวดล้อม GCLOUD_PROJECT
ก็ได้
Node.js Admin SDK
admin.initializeApp({ projectId: "your-project-id" });
ตัวแปรสภาพแวดล้อม
export GCLOUD_PROJECT="your-project-id"
นำเข้าและส่งออกข้อมูล
โปรแกรมจำลองฐานข้อมูลและ Cloud Storage for Firebase ช่วยให้คุณส่งออกข้อมูลจากอินสแตนซ์โปรแกรมจำลองที่ทำงานอยู่ได้ กําหนดชุดข้อมูลพื้นฐานที่จะใช้ในเทสหน่วยหรือเวิร์กโฟลว์การผสานรวมอย่างต่อเนื่อง จากนั้นส่งออกเพื่อแชร์กับทีม
firebase emulators:export ./dir
ในการทดสอบ ให้นําเข้าข้อมูลพื้นฐานเมื่อเปิดใช้งานโปรแกรมจําลอง
firebase emulators:start --import=./dir
คุณสามารถสั่งให้โปรแกรมจำลองส่งออกข้อมูลเมื่อปิดเครื่องได้ โดยระบุเส้นทางการส่งออกหรือใช้เส้นทางที่ส่งไปยัง Flag --import
ก็ได้
firebase emulators:start --import=./dir --export-on-exit
ตัวเลือกการนําเข้าและส่งออกข้อมูลเหล่านี้ใช้ได้กับคําสั่ง firebase emulators:exec
ด้วย ดูข้อมูลเพิ่มเติมได้ที่การอ้างอิงคำสั่งของโปรแกรมจำลอง
ความแตกต่างระหว่างโปรแกรมจำลอง Cloud Storage for Firebase กับเวอร์ชันที่ใช้งานจริง
สําหรับการทดสอบแอปไคลเอ็นต์ โปรแกรมจําลอง Cloud Storage for Firebase จะสอดคล้องกับเวอร์ชันที่ใช้งานจริงเกือบทั้งหมดในแง่ของแพลตฟอร์ม Firebase API คาดว่าคําสั่ง Firebase ทั้งหมดจะทํางานระหว่าง Firebase SDK ปกติ (แพลตฟอร์มเว็บ, Android และ Apple)
การทดสอบแอปฝั่งเซิร์ฟเวอร์มีข้อจำกัด Firebase Admin SDK ใช้ประโยชน์จากแพลตฟอร์ม Google Cloud API และมีการจําลองปลายทางของ API นี้ไม่ทั้งหมด โดยทั่วไปแล้ว ทุกอย่างที่ทําได้จาก SDK ของไคลเอ็นต์ (การอัปโหลดหรือลบไฟล์ การรับและการตั้งค่าข้อมูลเมตา) จะใช้ได้จาก Admin SDK ด้วย แต่การดำเนินการอื่นๆ นอกเหนือจากนี้จะใช้ไม่ได้ ข้อยกเว้นที่สำคัญมีดังนี้
ความแตกต่างจาก Google Cloud Storage
ผลิตภัณฑ์ Cloud Storage for Firebase ซึ่งรวมถึงโปรแกรมจำลองพื้นที่เก็บข้อมูลมีฟังก์ชันการทำงานย่อยของ Google Cloud Storage (GCS) ที่มุ่งเน้นที่ออบเจ็กต์พื้นที่เก็บข้อมูล ซึ่งมีประโยชน์อย่างยิ่งสำหรับการพัฒนาแอป Firebase Cloud Storage for Firebase แตกต่างจาก GCS ดังนี้
- ปัจจุบัน Cloud Storage for Firebase ไม่รองรับ
Bucket
API สำหรับการสร้าง แสดงรายการ รับ หรือลบที่เก็บข้อมูล - จาก Google Cloud Storage Objects API ระบบรองรับวิธีการต่อไปนี้
copy
,delete
,get
,insert
,list
,patch
,rewrite
,update
Cloud IAM
ชุดโปรแกรมจำลอง Firebase จะไม่พยายามจำลองหรือยึดตามลักษณะการทำงานที่เกี่ยวข้องกับ IAM ใดๆ สำหรับการเรียกใช้ โปรแกรมจำลองจะเป็นไปตามกฎการรักษาความปลอดภัยของ Firebase ที่ระบุไว้ แต่ในกรณีที่ปกติแล้วจะใช้ IAM เช่น เพื่อตั้งค่าบัญชีบริการที่เรียกใช้ Cloud Functions และสิทธิ์ต่างๆ โปรแกรมจำลองจะไม่สามารถกําหนดค่าได้ แต่จะใช้บัญชีที่พร้อมใช้งานทั่วโลกในเครื่องของนักพัฒนาซอฟต์แวร์ ซึ่งคล้ายกับการเรียกใช้สคริปต์ในเครื่องโดยตรง
การแจ้งเตือน Pub/Sub
โปรแกรมจำลอง Cloud Storage for Firebase ไม่ผสานรวมกับโปรแกรมจำลอง Pub/Sub ในระบบคลาวด์ จึงไม่รองรับการสร้างแชแนล/การแจ้งเตือนสำหรับการเปลี่ยนแปลงออบเจ็กต์พื้นที่เก็บข้อมูล เราขอแนะนำให้ใช้เงื่อนไขเริ่มต้นของ Cloud Functionsพื้นที่เก็บข้อมูลโดยตรง
ข้อมูลเมตาระดับที่เก็บข้อมูล
โปรแกรมจำลอง Cloud Storage for Firebase ไม่รองรับการกำหนดค่าระดับที่เก็บข้อมูล ซึ่งรวมถึงคลาสพื้นที่เก็บข้อมูล การกำหนดค่า CORS ระดับที่เก็บข้อมูล ป้ายกำกับ หรือนโยบายการเก็บรักษา Firebase ตั้งใจที่จะปรับปรุงการสนับสนุนนี้เมื่อเวลาผ่านไป
ฉันควรทำอย่างไรต่อไป
- ดูชุดวิดีโอที่ดูแลและตัวอย่างวิธีใช้อย่างละเอียดได้ในเพลย์ลิสต์การฝึกของ Firebase Emulators
- เนื่องจากฟังก์ชันที่ทริกเกอร์เป็นการผสานรวมทั่วไปกับ Cloud Storage for Firebase ดูข้อมูลเพิ่มเติมเกี่ยวกับโปรแกรมจำลอง Cloud Functions for Firebase ได้ที่หัวข้อเรียกใช้ฟังก์ชันในเครื่อง