अपने ऐप को फायरबेस एमुलेटर के लिए क्लाउड स्टोरेज से कनेक्ट करने से पहले, सुनिश्चित करें कि आप समग्र फायरबेस लोकल एमुलेटर सूट वर्कफ़्लो को समझते हैं , और आप स्थानीय एमुलेटर सूट को स्थापित और कॉन्फ़िगर करते हैं और इसके सीएलआई कमांड की समीक्षा करते हैं।
एक फायरबेस प्रोजेक्ट चुनें
फायरबेस लोकल इम्यूलेटर सुइट एकल फायरबेस प्रोजेक्ट के लिए उत्पादों का अनुकरण करता है।
उपयोग करने के लिए प्रोजेक्ट का चयन करने के लिए, आप एमुलेटर शुरू करने से पहले, CLI रन firebase use
। या, आप प्रत्येक एमुलेटर कमांड को --project
फ्लैग पास कर सकते हैं।
स्थानीय इम्यूलेटर सूट वास्तविक फायरबेस परियोजनाओं और डेमो परियोजनाओं के अनुकरण का समर्थन करता है।
परियोजना प्रकार | विशेषताएँ | एमुलेटर के साथ प्रयोग करें |
---|---|---|
असली | एक वास्तविक फायरबेस प्रोजेक्ट वह है जिसे आपने बनाया और कॉन्फ़िगर किया है (सबसे अधिक संभावना फायरबेस कंसोल के माध्यम से)। वास्तविक परियोजनाओं में लाइव संसाधन होते हैं, जैसे डेटाबेस इंस्टेंसेस, स्टोरेज बकेट, फ़ंक्शंस, या आपके द्वारा उस फायरबेस प्रोजेक्ट के लिए सेट किया गया कोई अन्य संसाधन। | वास्तविक फायरबेस परियोजनाओं के साथ काम करते समय, आप किसी भी या सभी समर्थित उत्पादों के लिए एमुलेटर चला सकते हैं। आप जिन उत्पादों का अनुकरण नहीं कर रहे हैं, उनके लिए आपके ऐप्स और कोड लाइव संसाधन (डेटाबेस उदाहरण, स्टोरेज बकेट, फ़ंक्शन, आदि) के साथ इंटरैक्ट करेंगे। |
डेमो | एक डेमो फायरबेस प्रोजेक्ट में कोई वास्तविक फायरबेस कॉन्फ़िगरेशन नहीं है और कोई लाइव संसाधन नहीं है। इन परियोजनाओं को आमतौर पर कोडलैब या अन्य ट्यूटोरियल्स के माध्यम से एक्सेस किया जाता है। डेमो प्रोजेक्ट के लिए प्रोजेक्ट आईडी में | डेमो फायरबेस प्रोजेक्ट के साथ काम करते समय, आपके ऐप्स और कोड केवल इम्यूलेटर के साथ इंटरैक्ट करते हैं। यदि आपका ऐप किसी ऐसे संसाधन से इंटरैक्ट करने का प्रयास करता है जिसके लिए कोई एमुलेटर नहीं चल रहा है, तो वह कोड विफल हो जाएगा। |
हम अनुशंसा करते हैं कि आप जहाँ भी संभव हो डेमो प्रोजेक्ट का उपयोग करें। लाभों में शामिल हैं:
- आसान सेटअप, चूंकि आप कभी भी फायरबेस प्रोजेक्ट बनाए बिना एमुलेटर चला सकते हैं
- मजबूत सुरक्षा, चूंकि यदि आपका कोड गलती से गैर-अनुकरणीय (उत्पादन) संसाधनों को आमंत्रित करता है, तो डेटा परिवर्तन, उपयोग और बिलिंग का कोई मौका नहीं है
- बेहतर ऑफ़लाइन समर्थन, क्योंकि आपके SDK कॉन्फ़िगरेशन को डाउनलोड करने के लिए इंटरनेट का उपयोग करने की कोई आवश्यकता नहीं है।
एमुलेटर से बात करने के लिए अपने ऐप को इंस्ट्रुमेंट करें
Android, Apple प्लेटफ़ॉर्म और वेब SDKs
निम्नानुसार 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);
तीव्र
Storage.storage().useEmulator(withHost:"localhost", port:9199)
वेब v8
var storage = firebase.storage(); if (location.hostname === "localhost") { // Point to the Storage emulator running on localhost. storage.useEmulator("localhost", 9199); }
वेब v9
const { getStorage, connectStorageEmulator } = require("firebase/storage"); const storage = getStorage(); if (location.hostname === "localhost") { // Point to the Storage emulator running on localhost. connectStorageEmulator(storage, "localhost", 9199); }
एमुलेटर का उपयोग करके फायरबेस इवेंट के लिए क्लाउड स्टोरेज द्वारा ट्रिगर किए गए क्लाउड फ़ंक्शंस का परीक्षण करने के लिए किसी अतिरिक्त सेटअप की आवश्यकता नहीं है। जब Firebase के लिए Cloud Storage और Cloud Functions एमुलेटर दोनों चल रहे हों, तो वे स्वचालित रूप से एक साथ काम करते हैं।
व्यवस्थापक एसडीके
जब FIREBASE_STORAGE_EMULATOR_HOST
परिवेश चर सेट किया जाता है, तो Firebase व्यवस्थापक SDK स्वचालित रूप से Firebase एमुलेटर के लिए क्लाउड स्टोरेज से जुड़ जाते हैं:
export FIREBASE_STORAGE_EMULATOR_HOST="localhost:9199"
ध्यान दें कि क्लाउड फ़ंक्शंस एमुलेटर स्वचालित रूप से फायरबेस एमुलेटर के लिए क्लाउड स्टोरेज के बारे में जानता है, इसलिए फायरबेस एमुलेटर के लिए क्लाउड फ़ंक्शंस और क्लाउड स्टोरेज के बीच एकीकरण का परीक्षण करते समय आप इस चरण को छोड़ सकते हैं। फायरबेस के लिए क्लाउड स्टोरेज में व्यवस्थापक एसडीके के लिए पर्यावरण चर स्वचालित रूप से सेट हो जाएगा।
यदि आप चाहते हैं कि आपका व्यवस्थापक SDK कोड किसी अन्य वातावरण में चल रहे साझा एमुलेटर से कनेक्ट हो, तो आपको उसी प्रोजेक्ट आईडी को निर्दिष्ट करना होगा जिसे आपने Firebase CLI का उपयोग करके सेट किया था। आप सीधे initializeApp
के लिए प्रोजेक्ट आईडी पास कर सकते हैं या GCLOUD_PROJECT
पर्यावरण चर सेट कर सकते हैं।
नोड.जेएस एडमिन एसडीके
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 क्लाउड एपीआई सतह का उपयोग करते हैं, और इस एपीआई के सभी समापन बिंदुओं का अनुकरण नहीं किया जाता है। एक सामान्य नियम के रूप में, क्लाइंट SDKs (फ़ाइलों को अपलोड या हटाना, मेटाडेटा प्राप्त करना और सेट करना) से जो कुछ भी किया जा सकता है, वह भी व्यवस्थापक SDK से उपयोग के लिए लागू किया जाता है, लेकिन इससे आगे कुछ भी नहीं है। उल्लेखनीय बहिष्करण नीचे सूचीबद्ध हैं।
Google क्लाउड स्टोरेज से अंतर
स्टोरेज इम्यूलेटर सहित फायरबेस उत्पाद के लिए क्लाउड स्टोरेज, स्टोरेज ऑब्जेक्ट्स पर ध्यान केंद्रित करने वाली Google क्लाउड स्टोरेज (जीसीएस) कार्यक्षमता का एक सबसेट प्रदान करता है जो फायरबेस ऐप्स के विकास के लिए बहुत उपयोगी है। फायरबेस के लिए क्लाउड स्टोरेज निम्नलिखित तरीकों से जीसीएस से अलग है:
- फायरबेस के लिए क्लाउड स्टोरेज वर्तमान में स्टोरेज बकेट बनाने, सूचीबद्ध करने, प्राप्त करने या हटाने के लिए
Bucket
एपीआई का समर्थन नहीं करता है। - Google क्लाउड स्टोरेज ऑब्जेक्ट एपीआई से, निम्न विधियों का समर्थन किया जाता है:
copy
,delete
,get
,insert
,list
बनाएं,patch
,rewrite
,update
।
बादल आईएएम
फायरबेस एम्यूलेटर सूट चलाने के लिए किसी भी आईएएम-संबंधित व्यवहार को दोहराने या उसका सम्मान करने का प्रयास नहीं करता है। एमुलेटर प्रदान किए गए फायरबेस सुरक्षा नियमों का पालन करते हैं, लेकिन ऐसी स्थितियों में जहां IAM का सामान्य रूप से उपयोग किया जाएगा, उदाहरण के लिए सेवा खाते को लागू करने वाले क्लाउड फ़ंक्शंस सेट करने के लिए और इस प्रकार अनुमतियां, एमुलेटर कॉन्फ़िगर करने योग्य नहीं है और आपकी डेवलपर मशीन पर विश्व स्तर पर उपलब्ध खाते का उपयोग करेगा, सीधे स्थानीय स्क्रिप्ट चलाने के समान।
पब / उप सूचनाएं
फायरबेस एमुलेटर के लिए क्लाउड स्टोरेज क्लाउड पब/सब एमुलेटर के साथ एकीकृत नहीं होता है और इस प्रकार स्टोरेज ऑब्जेक्ट परिवर्तनों के लिए चैनल/नोटिफिकेशन बनाने का समर्थन नहीं करता है। हम सीधे क्लाउड फ़ंक्शंस स्टोरेज ट्रिगर्स का उपयोग करने की सलाह देते हैं।
बकेट-स्तरीय मेटाडेटा
Firebase एमुलेटर के लिए क्लाउड स्टोरेज स्टोरेज क्लास, बकेट-लेवल CORS कॉन्फ़िगरेशन, लेबल या अवधारण नीतियों सहित किसी भी बकेट-लेवल कॉन्फ़िगरेशन का समर्थन नहीं करता है। फायरबेस समय के साथ इस समर्थन में सुधार करना चाहता है।
आगे क्या?
- वीडियो के क्युरेट किए गए सेट और विस्तृत कैसे करें उदाहरणों के लिए, Firebase Emulators प्रशिक्षण प्लेलिस्ट का अनुसरण करें।
- चूंकि ट्रिगर किए गए फ़ंक्शन फायरबेस के लिए क्लाउड स्टोरेज के साथ एक विशिष्ट एकीकरण हैं, स्थानीय रूप से रन फ़ंक्शंस में फायरबेस एमुलेटर के क्लाउड फ़ंक्शंस के बारे में अधिक जानें।