फायरबेस एम्यूलेटर के लिए अपने ऐप को क्लाउड स्टोरेज से कनेक्ट करें

अपने ऐप को फायरबेस एमुलेटर के लिए क्लाउड स्टोरेज से कनेक्ट करने से पहले, सुनिश्चित करें कि आप समग्र फायरबेस लोकल एमुलेटर सूट वर्कफ़्लो को समझते हैं , और आप लोकल एमुलेटर सूट को इंस्टॉल और कॉन्फ़िगर करते हैं और इसके सीएलआई कमांड की समीक्षा करते हैं।

एक फायरबेस प्रोजेक्ट चुनें

फायरबेस लोकल एमुलेटर सुइट एकल फायरबेस प्रोजेक्ट के लिए उत्पादों का अनुकरण करता है।

उपयोग करने के लिए प्रोजेक्ट का चयन करने के लिए, एमुलेटर शुरू करने से पहले, सीएलआई में अपनी कार्यशील निर्देशिका में firebase use । या, आप प्रत्येक एमुलेटर कमांड को --project फ़्लैग पास कर सकते हैं।

स्थानीय एमुलेटर सुइट वास्तविक फायरबेस परियोजनाओं और डेमो परियोजनाओं के अनुकरण का समर्थन करता है।

परियोजना प्रकार विशेषताएँ एम्यूलेटर के साथ प्रयोग करें
असली

एक वास्तविक फ़ायरबेस प्रोजेक्ट वह है जिसे आपने बनाया और कॉन्फ़िगर किया है (संभवतः फ़ायरबेस कंसोल के माध्यम से)।

वास्तविक परियोजनाओं में लाइव संसाधन होते हैं, जैसे डेटाबेस इंस्टेंसेस, स्टोरेज बकेट, फ़ंक्शन, या आपके द्वारा उस फायरबेस प्रोजेक्ट के लिए सेट किया गया कोई अन्य संसाधन।

वास्तविक फायरबेस परियोजनाओं के साथ काम करते समय, आप किसी या सभी समर्थित उत्पादों के लिए एमुलेटर चला सकते हैं।

किसी भी उत्पाद के लिए जिसका आप अनुकरण नहीं कर रहे हैं, आपके ऐप्स और कोड लाइव संसाधन (डेटाबेस इंस्टेंस, स्टोरेज बकेट, फ़ंक्शन इत्यादि) के साथ इंटरैक्ट करेंगे।

डेमो

डेमो फ़ायरबेस प्रोजेक्ट में कोई वास्तविक फ़ायरबेस कॉन्फ़िगरेशन नहीं है और कोई लाइव संसाधन नहीं है। इन परियोजनाओं को आमतौर पर कोडलैब या अन्य ट्यूटोरियल के माध्यम से एक्सेस किया जाता है।

डेमो प्रोजेक्ट के लिए प्रोजेक्ट आईडी में demo- उपसर्ग होता है।

डेमो फायरबेस प्रोजेक्ट्स के साथ काम करते समय, आपके ऐप्स और कोड केवल एमुलेटर के साथ इंटरैक्ट करते हैं। यदि आपका ऐप किसी ऐसे संसाधन के साथ इंटरैक्ट करने का प्रयास करता है जिसके लिए एमुलेटर नहीं चल रहा है, तो वह कोड विफल हो जाएगा।

हम अनुशंसा करते हैं कि आप जहां भी संभव हो डेमो प्रोजेक्ट का उपयोग करें। लाभों में शामिल हैं:

  • आसान सेटअप, क्योंकि आप कभी भी फायरबेस प्रोजेक्ट बनाए बिना एमुलेटर चला सकते हैं
  • मजबूत सुरक्षा, क्योंकि यदि आपका कोड गलती से गैर-अनुकरणित (उत्पादन) संसाधनों का आह्वान करता है, तो डेटा परिवर्तन, उपयोग और बिलिंग की कोई संभावना नहीं है
  • बेहतर ऑफ़लाइन समर्थन, क्योंकि आपके एसडीके कॉन्फ़िगरेशन को डाउनलोड करने के लिए इंटरनेट तक पहुंचने की कोई आवश्यकता नहीं है।

एमुलेटर से बात करने के लिए अपने ऐप को उपकरण दें

Android, Apple प्लेटफ़ॉर्म और वेब SDK

फायरबेस एमुलेटर के लिए क्लाउड स्टोरेज के साथ इंटरैक्ट करने के लिए अपना इन-ऐप कॉन्फ़िगरेशन या टेस्ट क्लास निम्नानुसार सेट करें।

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);
तीव्र
Storage.storage().useEmulator(withHost: "127.0.0.1", port: 9199)

Web modular API

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 namespaced API

var storage = firebase.storage();
if (location.hostname === "localhost") {
  // Point to the Storage emulator running on localhost.
  storage.useEmulator("127.0.0.1", 9199);
} 

एमुलेटर का उपयोग करके फायरबेस इवेंट के लिए क्लाउड स्टोरेज द्वारा ट्रिगर किए गए क्लाउड फ़ंक्शन का परीक्षण करने के लिए किसी अतिरिक्त सेटअप की आवश्यकता नहीं है। जब फायरबेस के लिए क्लाउड स्टोरेज और क्लाउड फ़ंक्शंस एमुलेटर दोनों चल रहे होते हैं, तो वे स्वचालित रूप से एक साथ काम करते हैं।

व्यवस्थापक SDKs

जब FIREBASE_STORAGE_EMULATOR_HOST पर्यावरण चर सेट किया जाता है, तो फायरबेस एडमिन SDK स्वचालित रूप से फायरबेस एमुलेटर के लिए क्लाउड स्टोरेज से कनेक्ट हो जाता है:

export FIREBASE_STORAGE_EMULATOR_HOST="127.0.0.1:9199"

ध्यान दें कि क्लाउड फ़ंक्शंस एमुलेटर स्वचालित रूप से फायरबेस एमुलेटर के लिए क्लाउड स्टोरेज के बारे में जानता है, इसलिए फायरबेस एमुलेटर के लिए क्लाउड फ़ंक्शंस और क्लाउड स्टोरेज के बीच एकीकरण का परीक्षण करते समय आप इस चरण को छोड़ सकते हैं। फायरबेस के लिए क्लाउड स्टोरेज में एडमिन एसडीके के लिए पर्यावरण चर स्वचालित रूप से सेट किया जाएगा।

यदि आप चाहते हैं कि आपका एडमिन एसडीके कोड किसी अन्य वातावरण में चल रहे साझा एमुलेटर से कनेक्ट हो, तो आपको वही प्रोजेक्ट आईडी निर्दिष्ट करना होगा जो आपने फायरबेस सीएलआई का उपयोग करके सेट किया था । आप ऐप को सीधे initializeApp के लिए एक प्रोजेक्ट आईडी पास कर सकते हैं या GCLOUD_PROJECT पर्यावरण चर सेट कर सकते हैं।

Node.js एडमिन SDK
admin.initializeApp({ projectId: "your-project-id" });
पर्यावरणपरिवर्ती तारक
export GCLOUD_PROJECT="your-project-id"

डेटा आयात और निर्यात करें

फायरबेस एमुलेटर के लिए डेटाबेस और क्लाउड स्टोरेज आपको चल रहे एमुलेटर इंस्टेंस से डेटा निर्यात करने की अनुमति देता है। अपने यूनिट परीक्षणों या निरंतर एकीकरण वर्कफ़्लोज़ में उपयोग करने के लिए डेटा का एक आधारभूत सेट परिभाषित करें, फिर इसे टीम के बीच साझा करने के लिए निर्यात करें।

firebase emulators:export ./dir

परीक्षणों में, एमुलेटर स्टार्टअप पर, बेसलाइन डेटा आयात करें।

firebase emulators:start --import=./dir

आप शटडाउन पर डेटा निर्यात करने के लिए एमुलेटर को निर्देश दे सकते हैं, या तो एक निर्यात पथ निर्दिष्ट कर सकते हैं या बस --import ध्वज को दिए गए पथ का उपयोग कर सकते हैं।

firebase emulators:start --import=./dir --export-on-exit

ये डेटा आयात और निर्यात विकल्प firebase emulators:exec कमांड के साथ भी काम करते हैं। अधिक जानकारी के लिए, एमुलेटर कमांड संदर्भ देखें।

फायरबेस एमुलेटर के लिए क्लाउड स्टोरेज उत्पादन से कैसे भिन्न है

क्लाइंट ऐप्स के परीक्षण के लिए, फायरबेस एमुलेटर के लिए क्लाउड स्टोरेज फायरबेस एपीआई सतह क्षेत्र के संबंध में उत्पादन के लिए लगभग पूरी तरह से संरेखित होता है। सभी फायरबेस कमांड के नियमित फायरबेस एसडीके (वेब, एंड्रॉइड और ऐप्पल प्लेटफॉर्म) के बीच काम करने की उम्मीद है।

सर्वर-साइड ऐप्स के परीक्षण के लिए, सीमाएँ मौजूद हैं। फायरबेस एडमिन एसडीके Google क्लाउड एपीआई सतह का उपयोग करते हैं, और इस एपीआई के सभी समापन बिंदुओं का अनुकरण नहीं किया जाता है। एक सामान्य नियम के रूप में, जो कुछ भी क्लाइंट एसडीके से किया जा सकता है (फ़ाइलें अपलोड करना या हटाना, मेटाडेटा प्राप्त करना और सेट करना) उसे एडमिन एसडीके के उपयोग के लिए भी लागू किया जाता है, लेकिन इससे आगे कुछ भी नहीं किया जाता है। उल्लेखनीय बहिष्करण नीचे सूचीबद्ध हैं।

Google क्लाउड स्टोरेज से अंतर

फायरबेस उत्पाद के लिए क्लाउड स्टोरेज, स्टोरेज एमुलेटर सहित, स्टोरेज ऑब्जेक्ट्स पर ध्यान केंद्रित करने वाली Google क्लाउड स्टोरेज (जीसीएस) कार्यक्षमता का एक सबसेट प्रदान करता है जो फायरबेस ऐप्स विकसित करने के लिए बहुत उपयोगी है। फायरबेस के लिए क्लाउड स्टोरेज निम्नलिखित तरीकों से जीसीएस से भिन्न है:

  • फायरबेस के लिए क्लाउड स्टोरेज वर्तमान में स्टोरेज बकेट बनाने, सूचीबद्ध करने, प्राप्त करने या हटाने के लिए Bucket एपीआई का समर्थन नहीं करता है।
  • Google क्लाउड स्टोरेज ऑब्जेक्ट एपीआई से, निम्नलिखित विधियाँ समर्थित हैं: copy , delete , get , insert , list , patch , rewrite , update

बादल आईएएम

फायरबेस एमुलेटर सूट चलाने के लिए किसी भी IAM-संबंधित व्यवहार को दोहराने या उसका सम्मान करने का प्रयास नहीं करता है। एमुलेटर प्रदान किए गए फायरबेस सुरक्षा नियमों का पालन करते हैं, लेकिन उन स्थितियों में जहां आईएएम का उपयोग सामान्य रूप से किया जाएगा, उदाहरण के लिए सेवा खाते और इस प्रकार अनुमतियों को लागू करने वाले क्लाउड फ़ंक्शंस सेट करने के लिए, एमुलेटर कॉन्फ़िगर करने योग्य नहीं है और आपके डेवलपर मशीन पर विश्व स्तर पर उपलब्ध खाते का उपयोग करेगा, किसी स्थानीय स्क्रिप्ट को सीधे चलाने के समान।

पब/उप सूचनाएं

फायरबेस एमुलेटर के लिए क्लाउड स्टोरेज क्लाउड पब/सब एमुलेटर के साथ एकीकृत नहीं होता है और इस प्रकार स्टोरेज ऑब्जेक्ट परिवर्तनों के लिए चैनल/नोटिफिकेशन बनाने का समर्थन नहीं करता है। हम सीधे क्लाउड फ़ंक्शंस स्टोरेज ट्रिगर्स का उपयोग करने की सलाह देते हैं।

बकेट-स्तरीय मेटाडेटा

फायरबेस एमुलेटर के लिए क्लाउड स्टोरेज स्टोरेज क्लास, बकेट-लेवल सीओआरएस कॉन्फ़िगरेशन, लेबल या रिटेंशन नीतियों सहित किसी भी बकेट-स्तरीय कॉन्फ़िगरेशन का समर्थन नहीं करता है। फायरबेस का इरादा समय के साथ इस समर्थन में सुधार करने का है।

आगे क्या?