เชื่อมต่อแอปกับโปรแกรมจำลอง 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 ไปยังโปรแกรมจำลองแต่ละตัว คำสั่ง

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

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 ตั้งใจที่จะปรับปรุงการสนับสนุนนี้ต่อไป

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