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