เชื่อมต่อแอปกับโปรแกรมจำลอง Cloud Storage for Firebase

ก่อนที่จะเชื่อมต่อแอปกับโปรแกรมจำลอง Cloud Storage for Firebase ให้ตรวจสอบว่าได้เข้าใจเวิร์กโฟลว์โดยรวมของ Firebase Local Emulator Suite รวมถึงติดตั้งและกำหนดค่า Local Emulator Suite และตรวจสอบคำสั่ง CLI แล้ว

เลือกโปรเจ็กต์ Firebase

Firebase Local Emulator Suite จะจำลองผลิตภัณฑ์สำหรับโปรเจ็กต์ Firebase โปรเจ็กต์เดียว

หากต้องการเลือกโปรเจ็กต์ที่จะใช้ ก่อนที่คุณจะเริ่มโปรแกรมจำลอง ในการเรียกใช้ CLI firebase use ในไดเรกทอรีการทำงาน หรือจะส่งธง --project ไปยังคำสั่งโปรแกรมจำลองแต่ละคำสั่งก็ได้

ชุดโปรแกรมจำลองภายในรองรับการจำลองโปรเจ็กต์ Firebase จริงและโปรเจ็กต์สาธิต

ประเภทโปรเจ็กต์ ฟีเจอร์ ใช้กับโปรแกรมจำลอง
จริง

โปรเจ็กต์ Firebase จริงคือโปรเจ็กต์ที่คุณสร้างและกำหนดค่า (ส่วนใหญ่จะผ่านคอนโซล Firebase)

โปรเจ็กต์จริงจะมีทรัพยากรที่เผยแพร่อยู่ เช่น อินสแตนซ์ฐานข้อมูล ที่เก็บข้อมูลของพื้นที่เก็บข้อมูล ฟังก์ชัน หรือทรัพยากรอื่นๆ ที่คุณตั้งค่าไว้สำหรับโปรเจ็กต์ Firebase นั้น

เมื่อทำงานกับโปรเจ็กต์ Firebase จริง คุณจะเรียกใช้โปรแกรมจำลองสำหรับผลิตภัณฑ์ที่รองรับบางรายการหรือทั้งหมดก็ได้

สำหรับผลิตภัณฑ์ที่คุณไม่ได้จำลอง แอปและโค้ดจะโต้ตอบกับทรัพยากรที่เผยแพร่อยู่ (อินสแตนซ์ฐานข้อมูล ที่เก็บข้อมูลของพื้นที่เก็บข้อมูล ฟังก์ชัน ฯลฯ)

เดโม

โปรเจ็กต์สาธิต Firebase ไม่มีการกำหนดค่า Firebase จริง และไม่มีทรัพยากรที่เผยแพร่อยู่ โดยปกติแล้วโปรเจ็กต์เหล่านี้จะเข้าถึงได้ผ่าน Codelab หรือบทแนะนำอื่นๆ

รหัสโปรเจ็กต์สำหรับโปรเจ็กต์สาธิตจะมี demo- นำหน้า

เมื่อทำงานกับโปรเจ็กต์ 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 ทำงานอยู่ โปรแกรมทั้งสองจะทำงานร่วมกันโดยอัตโนมัติ

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 สำหรับ 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 ของไคลเอ็นต์ (การอัปโหลดหรือลบไฟล์ รับและตั้งค่าข้อมูลเมตา) ก็จะมีการติดตั้งใช้งานจาก 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 ตั้งใจที่จะปรับปรุงการสนับสนุนนี้ต่อไป

ฉันควรทำอย่างไรต่อไป