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

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

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

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

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

Local Emulator Suite รองรับการจำลองโปรเจ็กต์ Firebase จริงและโปรเจ็กต์สาธิต

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

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

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

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

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

เดโม

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

รหัสโปรเจ็กต์ของโปรเจ็กต์เดโมจะมีคำนำหน้า demo-

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

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

  • ตั้งค่าได้ง่ายขึ้นเนื่องจากคุณสามารถเรียกใช้โปรแกรมจำลองได้โดยไม่ต้องสร้างโปรเจ็กต์ Firebase
  • ความปลอดภัยที่มากขึ้น เนื่องจากหากโค้ดเรียกใช้ทรัพยากรที่ไม่ใช่การจําลอง (เวอร์ชันที่ใช้งานจริง) โดยไม่ได้ตั้งใจ จะไม่มีการเปลี่ยนแปลงข้อมูล การใช้งาน และการเรียกเก็บเงิน
  • รองรับการทำงานแบบออฟไลน์ได้ดียิ่งขึ้น เนื่องจากไม่จําเป็นต้องเข้าถึงอินเทอร์เน็ตเพื่อดาวน์โหลดการกําหนดค่า SDK

เครื่องมือวัดผลแอปเพื่อพูดคุยกับโปรแกรมจำลอง

แพลตฟอร์ม Android, Apple และ Web 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 Emulatorโดยอัตโนมัติเมื่อตั้งค่าตัวแปรสภาพแวดล้อม 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

คุณสามารถสั่งให้โปรแกรมจำลองส่งออกข้อมูลเมื่อปิดเครื่องได้ โดยระบุเส้นทางการส่งออกหรือใช้เส้นทางที่ส่งไปยัง Flag --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 จะไม่พยายามจำลองหรือยึดตามลักษณะการทำงานที่เกี่ยวข้องกับ IAM ใดๆ สำหรับการเรียกใช้ โปรแกรมจำลองจะเป็นไปตามกฎการรักษาความปลอดภัยของ Firebase ที่ระบุไว้ แต่ในกรณีที่ปกติแล้วจะใช้ IAM เช่น เพื่อตั้งค่าบัญชีบริการที่เรียกใช้ Cloud Functions และสิทธิ์ต่างๆ โปรแกรมจำลองจะไม่สามารถกําหนดค่าได้ แต่จะใช้บัญชีที่พร้อมใช้งานทั่วโลกในเครื่องของนักพัฒนาซอฟต์แวร์ ซึ่งคล้ายกับการเรียกใช้สคริปต์ในเครื่องโดยตรง

การแจ้งเตือน Pub/Sub

โปรแกรมจำลอง Cloud Storage for Firebase ไม่ได้ผสานรวมกับโปรแกรมจำลอง Cloud Pub/Sub จึงไม่รองรับการสร้างช่องทาง/การแจ้งเตือนสำหรับการเปลี่ยนแปลงออบเจ็กต์พื้นที่เก็บข้อมูล เราขอแนะนําให้ใช้ทริกเกอร์พื้นที่เก็บข้อมูล Cloud Functions โดยตรง

ข้อมูลเมตาระดับที่เก็บข้อมูล

โปรแกรมจำลอง Cloud Storage for Firebase ไม่รองรับการกำหนดค่าระดับที่เก็บข้อมูล ซึ่งรวมถึงคลาสพื้นที่เก็บข้อมูล การกำหนดค่า CORS ระดับที่เก็บข้อมูล ป้ายกำกับ หรือนโยบายการเก็บรักษา Firebase ตั้งใจที่จะปรับปรุงการสนับสนุนนี้เมื่อเวลาผ่านไป

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