ก่อนเชื่อมต่อแอปกับโปรแกรมจำลอง Cloud Storage for Firebase โปรดตรวจสอบว่า ที่คุณเข้าใจเวิร์กโฟลว์ 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
ตั้งค่าการกำหนดค่าในแอปหรือชั้นเรียนทดสอบเพื่อโต้ตอบกับ โปรแกรมจำลอง 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 โดยอัตโนมัติ
โปรแกรมจำลองเมื่อมีการตั้งค่าตัวแปรสภาพแวดล้อม 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
Admin SDK ของ Node.js
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
คุณสามารถสั่งให้โปรแกรมจำลองส่งออกข้อมูลเมื่อปิดระบบ โดยระบุ
เส้นทางการส่งออก หรือใช้เส้นทางที่ส่งไปยัง --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 Emulator Suite จะไม่พยายามจำลองหรือทำตาม พฤติกรรมที่เกี่ยวกับ IAM สำหรับการวิ่ง โปรแกรมจำลองปฏิบัติตามการรักษาความปลอดภัยของ Firebase กฎที่มีให้ แต่ในสถานการณ์ที่มักจะใช้ IAM เช่น เพื่อตั้งค่า Cloud Functions ที่เรียกใช้บัญชีบริการ รวมถึงสิทธิ์ต่างๆ โปรแกรมจำลองไม่สามารถกำหนดค่าได้ และจะใช้บัญชีที่ใช้ได้ทั่วโลกใน เครื่องของนักพัฒนาซอฟต์แวร์ ซึ่งคล้ายกับการเรียกใช้สคริปต์ในเครื่องโดยตรง
การแจ้งเตือน Pub/Sub
โปรแกรมจำลอง Cloud Storage for Firebase ไม่ผสานรวมกับระบบคลาวด์ โปรแกรมจำลอง Pub/Sub ดังนั้นจึงไม่รองรับการสร้าง ช่องทาง/การแจ้งเตือนสำหรับการเปลี่ยนแปลงออบเจ็กต์พื้นที่เก็บข้อมูล เราขอแนะนำให้ใช้ Cloud Functions Storage จะทริกเกอร์โดยตรง
ข้อมูลเมตาระดับที่เก็บข้อมูล
โปรแกรมจำลอง Cloud Storage for Firebase ไม่รองรับที่เก็บข้อมูลระดับใดเลย การกำหนดค่า ซึ่งรวมถึงคลาสพื้นที่เก็บข้อมูล การกำหนดค่า CORS ระดับที่เก็บข้อมูล ป้ายกำกับ หรือนโยบายการเก็บรักษา Firebase ตั้งใจที่จะปรับปรุงการสนับสนุนนี้ต่อไป
ฉันควรทำอย่างไรต่อไป
- หากต้องการดูชุดวิดีโอที่มีการดูแลจัดการและตัวอย่างวิธีการโดยละเอียด ให้ทำตามเพลย์ลิสต์การฝึกอบรมของ Firebase Emulators
- เนื่องจากฟังก์ชันที่เรียกใช้เป็นการผสานรวมโดยทั่วไปกับ Cloud Storage for Firebase ดูข้อมูลเพิ่มเติมเกี่ยวกับโปรแกรมจำลอง Cloud Functions for Firebase ที่ เรียกใช้ฟังก์ชันในเครื่อง