क्लाउड फ़ंक्शंस शेल परीक्षण डेटा के साथ फ़ंक्शंस को लागू करने के लिए एक इंटरैक्टिव शेल प्रदान करता है। शेल सभी ट्रिगर प्रकारों का समर्थन करता है।
व्यवस्थापक क्रेडेंशियल सेट करें (वैकल्पिक)
यदि आप चाहते हैं कि आपके फ़ंक्शन परीक्षण फायरबेस एडमिन एसडीके के माध्यम से Google एपीआई या अन्य फायरबेस एपीआई के साथ इंटरैक्ट करें, तो आपको एडमिन क्रेडेंशियल सेट करने की आवश्यकता हो सकती है।
- क्लाउड फायरस्टोर और रीयलटाइम डेटाबेस ट्रिगर्स के पास पहले से ही पर्याप्त क्रेडेंशियल हैं, और उन्हें अतिरिक्त सेटअप की आवश्यकता नहीं है।
- ऑथेंटिकेशन और एफसीएम जैसे फायरबेस एपीआई या क्लाउड ट्रांसलेशन या क्लाउड स्पीच जैसे Google एपीआई सहित अन्य सभी एपीआई को इस अनुभाग में वर्णित सेटअप चरणों की आवश्यकता होती है। यह लागू होता है चाहे आप क्लाउड फ़ंक्शंस शेल या
firebase emulators:start
।
अनुकरणीय कार्यों के लिए व्यवस्थापक क्रेडेंशियल सेट करने के लिए:
- Google क्लाउड कंसोल का सेवा खाता फलक खोलें।
- सुनिश्चित करें कि ऐप इंजन डिफ़ॉल्ट सेवा खाता चयनित है, और क्रिएट कुंजी का चयन करने के लिए दाईं ओर विकल्प मेनू का उपयोग करें।
- संकेत मिलने पर, कुंजी प्रकार के लिए JSON चुनें और Create पर क्लिक करें।
डाउनलोड की गई कुंजी को इंगित करने के लिए अपने Google डिफ़ॉल्ट क्रेडेंशियल सेट करें:
यूनिक्स
export GOOGLE_APPLICATION_CREDENTIALS="path/to/key.json" firebase functions:shell
खिड़कियाँ
set GOOGLE_APPLICATION_CREDENTIALS=path\to\key.json firebase functions:shell
इन चरणों को पूरा करने के बाद, आपके फ़ंक्शन परीक्षण एडमिन एसडीके का उपयोग करके फ़ायरबेस और Google एपीआई तक पहुंच सकते हैं। उदाहरण के लिए, प्रमाणीकरण ट्रिगर का परीक्षण करते समय, अनुकरणित फ़ंक्शन admin.auth().getUserByEmail(email)
कॉल कर सकता है।
क्लाउड फ़ंक्शंस शेल का उपयोग करके फ़ंक्शन परोसें
क्लाउड फ़ंक्शंस शेल परीक्षण डेटा के साथ फ़ंक्शंस को लागू करने के लिए एक इंटरैक्टिव शेल के साथ सभी प्रकार के फ़ंक्शन ट्रिगर का अनुकरण करता है। फ़ंक्शन प्रकार के अनुसार विकल्प भिन्न होते हैं, लेकिन मूल उपयोग प्रारूप है:
myFunctionName(data, options)
रीयलटाइम डेटाबेस, क्लाउड फायरस्टोर और पबसब ट्रिगर्स के लिए data
पैरामीटर आवश्यक है, और अन्य सभी फ़ंक्शन प्रकारों के लिए वैकल्पिक है। साथ ही, वैकल्पिक options
पैरामीटर केवल रीयलटाइम डेटाबेस और क्लाउड फायरस्टोर फ़ंक्शंस के लिए मान्य है।
वैकल्पिक रूप से, आप फ़ाइल को एक वेरिएबल के रूप में सहेजकर और इसके साथ एक फ़ंक्शन को लागू करके स्थानीय फ़ाइल से परीक्षण डेटा लोड कर सकते हैं:
var data = require('./path/to/testData.json');
myFunction(data);
क्लाउड फ़ंक्शंस शेल को स्थापित और कॉन्फ़िगर करें
इस सुविधा का उपयोग करने के लिए, firebase-tools
न्यूनतम संस्करण 3.11.0 होना चाहिए, और firebase-functions
एसडीके का न्यूनतम संस्करण 0.6.2 होना चाहिए। दोनों को अद्यतन करने के लिए, अपने प्रोजेक्ट के लिए functions/
निर्देशिका में निम्नलिखित कमांड चलाएँ:
npm install --save firebase-functions@latest
npm install -g firebase-tools
यदि आप कस्टम फ़ंक्शन कॉन्फ़िगरेशन वैरिएबल का उपयोग कर रहे हैं, तो पहले अपने स्थानीय वातावरण में अपना कस्टम कॉन्फ़िगरेशन प्राप्त करने के लिए कमांड चलाएँ ( functions
निर्देशिका के भीतर इसे चलाएँ):
firebase functions:config:get > .runtimeconfig.json # If using Windows PowerShell, replace the above with: # firebase functions:config:get | ac .runtimeconfig.json
अंत में, निम्न कमांड के साथ शेल चलाएँ:
firebase functions:shell
HTTPS फ़ंक्शन प्रारंभ करें
शेल में HTTPS फ़ंक्शंस को लागू करने के लिए, उपयोग request
एनपीएम मॉड्यूल के समान है, लेकिन request
उस फ़ंक्शन के नाम से बदलें जिसे आप अनुकरण करना चाहते हैं। उदाहरण के लिए:
# invoke
myHttpsFunction()
myHttpsFunction.get()
myHttpsFunction.post()
# invoke at sub-path
myHttpsFunction('/path')
myHttpsFunction.get('/path')
myHttpsFunction.post('/path')
# send POST request with form data
myHttpsFunction.post('/path').form( {foo: 'bar' })
HTTPS कॉल करने योग्य फ़ंक्शंस को प्रारंभ करें
HTTPS कॉल करने योग्य फ़ंक्शंस को स्थानीय रूप से लागू करते समय, आपको उचित परीक्षण डेटा प्रदान करना होगा।
# invoke
myCallableFunction('test data')
myCallableFunction({'foo': 'bar'})
वैकल्पिक रूप से, आप दूसरे पैरामीटर के रूप में Firebase-Instance-ID-token
पास कर सकते हैं। यह एक स्ट्रिंग होनी चाहिए.
# invoke with FCM registration token
myCallableFunction('test data', {instanceIdToken: 'sample token'})
context.auth
का अनुकरण वर्तमान में अनुपलब्ध है।
रीयलटाइम डेटाबेस फ़ंक्शंस को लागू करें
रीयलटाइम डेटाबेस फ़ंक्शंस को स्थानीय रूप से चलाते समय, आपको उचित परीक्षण डेटा प्रदान करना होगा। इसका आम तौर पर मतलब onCreate
ऑपरेशंस के लिए नया परीक्षण डेटा, onDelete
ऑपरेशंस के लिए पुराना/हटाया गया डेटा, और onUpdate
या onWrite
फ़ंक्शन दोनों के लिए प्रदान करना है:
# invoke onCreate function
myDatabaseFunction('new_data')
# invoke onDelete function
myDatabaseFunction('old_data')
# invoke onUpdate or onWrite function
myDatabaseFunction({before: 'old_data', after: 'new_data' })
before/after
विकल्पों के अलावा, शेल पथ में वाइल्डकार्ड का मज़ाक उड़ाने के लिए params
विकल्प प्रदान करता है:
# mock wildcards in path, for example: if the path was input/{group}/{id}
myDatabaseFunction('data', {params: {group: 'a', id: 123}})
डिफ़ॉल्ट रूप से, शेल व्यवस्थापक (सेवा खाता) विशेषाधिकारों के साथ रीयलटाइम डेटाबेस फ़ंक्शन चलाता है। इसके बजाय किसी विशेष अंतिम उपयोगकर्ता के रूप में, या एक अप्रमाणित उपयोगकर्ता के रूप में फ़ंक्शन चलाने के लिए auth
विकल्प का उपयोग करें:
# to mock unauthenticated user
myDatabaseFunction('data', {authMode: 'USER'})
# to mock end user
myDatabaseFunction('data', {auth: {uid: 'abcd'}})
फायरस्टोर फ़ंक्शंस को लागू करें
फायरस्टोर फ़ंक्शंस को स्थानीय रूप से चलाते समय, आपको उचित परीक्षण डेटा प्रदान करना होगा। इसका मतलब आम तौर पर onCreate
ऑपरेशंस के लिए नया परीक्षण डेटा, onDelete
ऑपरेशंस के लिए पुराना/हटाया गया डेटा और onUpdate
या onWrite
फ़ंक्शन दोनों के लिए प्रदान करना है। ध्यान दें कि फायरस्टोर डेटा को कुंजी-मूल्य जोड़े होना चाहिए; समर्थित डेटा प्रकार देखें.
# invoke onCreate function
myFirestoreFunction({foo: ‘new’})
# invoke onDelete function
myFirestoreFunction({foo: ‘old’})
# invoke onUpdate or onWrite function
myFirestoreFunction({before: {foo: ‘old’}, after: {foo: ‘new’} })
data
ऑब्जेक्ट के before/after
फ़ील्ड के अलावा, आप दस्तावेज़ नाम में वाइल्डकार्ड की नकल करने के लिए options
ऑब्जेक्ट पर params
फ़ील्ड का उपयोग कर सकते हैं:
# mock wildcards in document name, for example: if the name was input/{group}/{id}
myFirestoreFunction({foo: ‘new’}, {params: {group: 'a', id: 123}})
शेल हमेशा प्रशासनिक विशेषाधिकारों के साथ फायरस्टोर फ़ंक्शंस चलाता है, जिसका अर्थ है कि यह किसी क्रिएट/अपडेट/डिलीट इवेंट का अनुकरण करता है जैसे कि यह किसी प्रशासनिक उपयोगकर्ता द्वारा किया गया हो।
PubSub फ़ंक्शंस को आमंत्रित करें
PubSub फ़ंक्शंस के लिए, अपने संदेश पेलोड को Buffer
इंस्टेंस में डालें और दिखाए गए अनुसार वैकल्पिक रूप से डेटा विशेषताएँ जोड़ें:
// invokes a function with the JSON message { hello: 'world' } and attributes { foo: 'bar' }
myPubsubFunction({data: new Buffer('{"hello":"world"}'), attributes: {foo: 'bar'}})
एनालिटिक्स फ़ंक्शंस को लागू करें
आप शेल में myAnalyticsFunction()
चलाकर बिना किसी डेटा के एनालिटिक्स फ़ंक्शन शुरू कर सकते हैं। फ़ंक्शन को परीक्षण डेटा के साथ चलाने के लिए, आपके फ़ंक्शन को आवश्यक विशिष्ट ईवेंट डेटा फ़ील्ड के लिए एक चर परिभाषित करने की अनुशंसा की जाती है:
var data = {
eventDim: [{
// populates event.data.params
params: {foo: {stringValue: 'bar'} },
// Also valid:
// {intValue: '10'}, {floatValue: '1.0'}, {doubleValue: '1.0'}
// populates event.data.name
name: 'event_name',
// populates event.data.logTime, specify in microseconds
timestampMicros: Date.now() * 1000,
// populates event.data.previousLogTime, specify in microseconds
previousTimestampMicros: Date.now() * 1000,
// populates event.data.reportingDate, specify in 'YYYYMMDD' format
date: '20170930',
// populates event.data.valueInUSD
valueInUsd: 230
}],
userDim: userDim
};
myAnalyticsFunction(data);
भंडारण और प्रामाणिक कार्यों को लागू करें
स्टोरेज और ऑथेंटिकेशन फ़ंक्शंस के लिए, स्थानीय फ़ंक्शन को उस परीक्षण डेटा के साथ प्रारंभ करें जिसे आप फ़ंक्शन के अंदर देखना चाहते हैं। आपके परीक्षण डेटा को संबंधित डेटा प्रारूपों का पालन करना चाहिए:
- क्लाउड स्टोरेज के लिए:
ObjectMetadata
- प्रमाणीकरण के लिए:
UserRecord
केवल वे फ़ील्ड निर्दिष्ट करें जिन पर आपका कोड निर्भर करता है, या यदि आप केवल फ़ंक्शन चलाना चाहते हैं तो कोई भी फ़ील्ड निर्दिष्ट न करें।