ก่อนเชื่อมต่อแอปกับโปรแกรมจำลอง Cloud Storage for Firebase โปรดตรวจสอบว่าคุณเข้าใจเวิร์กโฟลว์โดยรวมของ Firebase Local Emulator Suite และติดตั้งและกำหนดค่า Local Emulator Suite รวมถึงตรวจสอบคำสั่ง CLI แล้ว
เลือกโปรเจ็กต์ Firebase
Firebase Local Emulator Suite จะจำลองผลิตภัณฑ์สำหรับโปรเจ็กต์ Firebase รายการเดียว
หากต้องการเลือกโปรเจ็กต์ที่จะใช้ ก่อนเริ่มโปรแกรมจำลอง ให้เรียกใช้ firebase use ในไดเรกทอรีที่ใช้งานอยู่ของ CLI หรือจะส่งแฟล็ก --project ไปยังคำสั่งโปรแกรมจำลองแต่ละคำสั่งก็ได้
Local Emulator Suite รองรับการจำลองโปรเจ็กต์ Firebase จริงและโปรเจ็กต์เดโม
| ประเภทโปรเจ็กต์ | ฟีเจอร์ | ใช้กับโปรแกรมจำลอง |
|---|---|---|
| เรียล |
โปรเจ็กต์ Firebase จริงคือโปรเจ็กต์ที่คุณสร้างและกำหนดค่า (โดยส่วนใหญ่จะผ่านคอนโซล Firebase) โปรเจ็กต์จริงมีทรัพยากรที่ใช้งานอยู่ เช่น อินสแตนซ์ฐานข้อมูล บัケットพื้นที่เก็บข้อมูล ฟังก์ชัน หรือทรัพยากรอื่นๆ ที่คุณตั้งค่าไว้สำหรับโปรเจ็กต์ Firebase นั้น |
เมื่อทำงานกับโปรเจ็กต์ Firebase จริง คุณสามารถเรียกใช้โปรแกรมจำลองสำหรับผลิตภัณฑ์ที่รองรับรายการใดก็ได้หรือทั้งหมด สำหรับผลิตภัณฑ์ที่คุณไม่ได้จำลอง แอปและโค้ดจะโต้ตอบกับทรัพยากรที่ใช้งานอยู่ (อินสแตนซ์ฐานข้อมูล, บัケットพื้นที่เก็บข้อมูล, ฟังก์ชัน ฯลฯ) |
| เดโม |
โปรเจ็กต์ Firebase สาธิตไม่มีการกำหนดค่า Firebase จริงและไม่มีทรัพยากรที่ใช้งานอยู่ โดยปกติแล้วโปรเจ็กต์เหล่านี้จะเข้าถึงผ่าน Codelab หรือบทแนะนำอื่นๆ รหัสโปรเจ็กต์สำหรับโปรเจ็กต์เดโมจะมีคำนำหน้า |
เมื่อทำงานกับโปรเจ็กต์ Firebase สาธิต แอปและโค้ดของคุณจะโต้ตอบกับโปรแกรมจำลองเท่านั้น หากแอปพยายามโต้ตอบกับทรัพยากรที่โปรแกรมจำลองไม่ได้ทำงานอยู่ โค้ดนั้นจะทำงานไม่สำเร็จ |
เราขอแนะนำให้คุณใช้โปรเจ็กต์เดโมเมื่อใดก็ตามที่เป็นไปได้ สิทธิประโยชน์มีดังนี้
- ตั้งค่าได้ง่ายขึ้น เนื่องจากคุณสามารถเรียกใช้โปรแกรมจำลองได้โดยไม่ต้องสร้างโปรเจ็กต์ Firebase
- ความปลอดภัยที่เข้มงวดขึ้น เนื่องจากหากโค้ดเรียกใช้ทรัพยากรที่ไม่ได้จำลอง (เวอร์ชันที่ใช้งานจริง) โดยไม่ตั้งใจ จะไม่มีโอกาสเกิดการเปลี่ยนแปลงข้อมูล การใช้งาน และการเรียกเก็บเงิน
- รองรับการใช้งานออฟไลน์ได้ดียิ่งขึ้น เนื่องจากไม่จำเป็นต้องเข้าถึงอินเทอร์เน็ตเพื่อดาวน์โหลดการกำหนดค่า SDK
ใช้เครื่องมือในแอปเพื่อสื่อสารกับโปรแกรมจำลอง
Android, แพลตฟอร์ม Apple และ SDK บนเว็บ
ตั้งค่าการกำหนดค่าในแอปหรือคลาสทดสอบเพื่อโต้ตอบกับโปรแกรมจำลอง Cloud Storage for Firebase ดังนี้
Kotlin
// 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)
Unity
FirebaseStorage storage = FirebaseStorage.DefaultInstance; // Connects to the Storage Emulator running on port 9199 storage.UseEmulator("127.0.0.1", 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 Functions ที่ทริกเกอร์โดยเหตุการณ์ Cloud Storage for Firebase โดยใช้โปรแกรมจำลอง เมื่อโปรแกรมจำลอง Cloud Storage for Firebase และ Cloud Functions ทำงานพร้อมกัน โปรแกรมทั้งสองจะทำงานร่วมกันโดยอัตโนมัติ
Admin SDK วินาที
Firebase Admin SDK จะเชื่อมต่อกับโปรแกรมจำลอง Cloud Storage for Firebase โดยอัตโนมัติเมื่อตั้งค่าตัวแปรสภาพแวดล้อม 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 ช่วยให้คุณส่งออกข้อมูลจากอินสแตนซ์โปรแกรมจำลองที่ทำงานอยู่ได้ กำหนดชุดข้อมูลพื้นฐานเพื่อใช้ใน Unit Test หรือเวิร์กโฟลว์การรวมอย่างต่อเนื่อง จากนั้นส่งออกเพื่อแชร์กับทีม
firebase emulators:export ./dirในการทดสอบ ให้เริ่มโปรแกรมจำลองและนำเข้าข้อมูลพื้นฐาน
firebase emulators:start --import=./dirคุณสามารถสั่งให้โปรแกรมจำลองส่งออกข้อมูลเมื่อปิดระบบ โดยระบุเส้นทางการส่งออกหรือใช้เส้นทางที่ส่งไปยังแฟล็ก --import
firebase emulators:start --import=./dir --export-on-exitตัวเลือกการนำเข้าและส่งออกข้อมูลเหล่านี้ใช้ได้กับคำสั่ง firebase emulators:exec ด้วยเช่นกัน ดูข้อมูลเพิ่มเติมได้ที่ข้อมูลอ้างอิงคำสั่งโปรแกรมจำลอง
ความแตกต่างระหว่างโปรแกรมจำลอง Cloud Storage for Firebase กับเวอร์ชันที่ใช้งานจริง
สำหรับการทดสอบแอปไคลเอ็นต์ โปรแกรมจำลอง Cloud Storage for Firebase จะสอดคล้องกับเวอร์ชันที่ใช้งานจริงเกือบสมบูรณ์แบบในแง่ของพื้นที่ผิว API ของ Firebase คำสั่ง Firebase ทั้งหมดควรทำงานร่วมกับ Firebase SDK ปกติ (แพลตฟอร์มเว็บ, Android และ Apple)
การทดสอบแอปฝั่งเซิร์ฟเวอร์มีข้อจำกัด Firebase Admin SDK ใช้แพลตฟอร์ม API Google Cloud และปลายทางบางรายการของ API นี้ไม่ได้จำลองขึ้น โดยทั่วไปแล้ว สิ่งที่ทำได้จาก SDK ของไคลเอ็นต์ (การอัปโหลดหรือลบไฟล์ การรับและการตั้งค่าข้อมูลเมตา) จะใช้ได้กับ Admin SDK ด้วย แต่สิ่งที่นอกเหนือจากนั้นจะใช้ไม่ได้ ข้อยกเว้นที่สำคัญมีดังนี้
ความแตกต่างจาก Google Cloud Storage
ผลิตภัณฑ์ Cloud Storage for Firebase รวมถึงโปรแกรมจำลอง Storage มีฟังก์ชันการทำงานบางส่วนของ Google Cloud Storage (GCS) ที่มุ่งเน้นออบเจ็กต์พื้นที่เก็บข้อมูลซึ่งมีประโยชน์อย่างมากสำหรับการพัฒนาแอป Firebase Cloud Storage for Firebase แตกต่างจาก GCS ดังนี้
- ปัจจุบัน Cloud Storage for Firebase ไม่รองรับ API ของ
Bucketสำหรับการสร้าง แสดงรายการ รับ หรือลบที่เก็บข้อมูล - จาก Google Cloud Storage Objects API ระบบรองรับเมธอดต่อไปนี้
copy,delete,get,insert,list,patch,rewrite,update
Cloud IAM
Firebase Emulator Suite ไม่พยายามจำลองหรือปฏิบัติตามพฤติกรรมที่เกี่ยวข้องกับ IAM สำหรับการเรียกใช้ โปรแกรมจำลองจะปฏิบัติตามกฎความปลอดภัยของ Firebase ที่ระบุไว้ แต่ในสถานการณ์ที่ปกติจะใช้ IAM เช่น เพื่อตั้งค่าบัญชีบริการที่เรียกใช้ Cloud Functions และสิทธิ์ โปรแกรมจำลองจะกำหนดค่าไม่ได้และจะใช้บัญชีที่ใช้ได้ทั่วโลกในคอมพิวเตอร์สำหรับการพัฒนาซอฟต์แวร์ของคุณ ซึ่งคล้ายกับการเรียกใช้สคริปต์ในเครื่องโดยตรง
การแจ้งเตือน Pub/Sub
โปรแกรมจำลอง Cloud Storage for Firebase ไม่ผสานรวมกับโปรแกรมจำลอง Cloud Pub/Sub จึงไม่รองรับการสร้างแชแนล/การแจ้งเตือนสำหรับการเปลี่ยนแปลงออบเจ็กต์พื้นที่เก็บข้อมูล เราขอแนะนำให้ใช้ทริกเกอร์พื้นที่เก็บข้อมูล Cloud Functions โดยตรง
ข้อมูลเมตาระดับบักเก็ต
โปรแกรมจำลอง Cloud Storage for Firebase ไม่รองรับการกำหนดค่าระดับที่เก็บข้อมูล ซึ่งรวมถึงคลาสพื้นที่เก็บข้อมูล, การกำหนดค่า CORS ระดับที่เก็บข้อมูล, ป้ายกำกับ หรือนโยบายการเก็บรักษา Firebase ตั้งใจที่จะปรับปรุงการรองรับนี้เมื่อเวลาผ่านไป
ฉันควรทำอย่างไรต่อไป
- ดูชุดวิดีโอที่คัดสรรมาและตัวอย่างวิธีการโดยละเอียดได้ที่เพลย์ลิสต์การฝึกอบรมเกี่ยวกับโปรแกรมจำลอง Firebase
- เนื่องจากฟังก์ชันที่ทริกเกอร์เป็นการผสานรวมทั่วไปกับ Cloud Storage for Firebase โปรดดูข้อมูลเพิ่มเติมเกี่ยวกับโปรแกรมจำลอง Cloud Functions for Firebase ที่หัวข้อ เรียกใช้ฟังก์ชันในเครื่อง