ก่อนเชื่อมต่อแอปกับโปรแกรมจำลอง 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)
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 ทำงานอยู่ ทั้ง 2 อีมูเลเตอร์จะทำงานร่วมกันโดยอัตโนมัติ
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 ช่วยให้คุณส่งออกข้อมูล จากอินสแตนซ์โปรแกรมจำลองที่กำลังทำงานได้ กำหนดชุดข้อมูลพื้นฐานที่จะใช้ในการทดสอบหน่วยหรือเวิร์กโฟลว์การผสานรวมอย่างต่อเนื่อง จากนั้นส่งออกเพื่อแชร์ในทีม
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 ปกติ (Web, Android และแพลตฟอร์ม Apple)
สำหรับการทดสอบแอปฝั่งเซิร์ฟเวอร์ จะมีข้อจำกัด Firebase Admin SDK ใช้Google Cloud API Surface และไม่ได้จำลองปลายทางทั้งหมดของ 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 ยังไม่รองรับ API ของ
Bucket
สำหรับ การสร้าง แสดง รับ หรือลบที่เก็บข้อมูล - จาก 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 ไม่ได้ผสานรวมกับโปรแกรมจำลอง Cloud Pub/Sub จึงไม่รองรับการสร้าง แชแนล/การแจ้งเตือนสำหรับการเปลี่ยนแปลงออบเจ็กต์พื้นที่เก็บข้อมูล เราขอแนะนำให้ใช้ Cloud Functions ทริกเกอร์พื้นที่เก็บข้อมูลโดยตรง
ข้อมูลเมตาระดับที่เก็บข้อมูล
Cloud Storage for Firebaseโปรแกรมจำลองไม่รองรับการกำหนดค่าระดับบัคเก็ต ใดๆ ซึ่งรวมถึงคลาสพื้นที่เก็บข้อมูล การกำหนดค่า CORS ระดับบัคเก็ต ป้ายกำกับ หรือนโยบายการเก็บรักษา Firebase ตั้งใจที่จะปรับปรุงการสนับสนุนนี้เมื่อเวลาผ่านไป
ฉันควรทำอย่างไรต่อไป
- ดูชุดวิดีโอที่ดูแลและตัวอย่างวิธีใช้อย่างละเอียดได้ในเพลย์ลิสต์การฝึกของ Firebase Emulators
- เนื่องจากฟังก์ชันที่ทริกเกอร์เป็นการผสานรวมทั่วไปกับ Cloud Storage for Firebase ดูข้อมูลเพิ่มเติมเกี่ยวกับโปรแกรมจำลอง Cloud Functions for Firebase ได้ที่ เรียกใช้ฟังก์ชันในเครื่อง