Google Cloud Firestore एक्सटेंशन

Apigee Edge के दस्तावेज़ देखे जा रहे हैं.
Apigee X के दस्तावेज़ पर जाएं.
info

वर्शन: 2.0.0

Cloud Firestore डेटाबेस में डेटा बनाना, पढ़ना या मिटाना.

इस कॉन्टेंट में, इस एक्सटेंशन को कॉन्फ़िगर करने और इस्तेमाल करने के बारे में जानकारी दी गई है. एपीआई प्रॉक्सी से इस एक्सटेंशन का इस्तेमाल करने से पहले, आपको ये काम करने होंगे:

  1. Firebase कंसोल में एक Firebase प्रोजेक्ट बनाएं. इसी प्रोजेक्ट में आपका डेटा सेव किया जाएगा.

  2. सेवा खाते के लिए कुंजी जनरेट करें.

  3. कॉन्फ़िगरेशन रेफ़रंस का इस्तेमाल करके एक्सटेंशन को जोड़ने और कॉन्फ़िगर करने के दौरान, जनरेट हुई कुंजी वाली JSON फ़ाइल के कॉन्टेंट का इस्तेमाल करें.

Cloud Firestore के बारे में जानकारी

Cloud Firestore, डेटा को दस्तावेज़ों में सेव करता है. इन दस्तावेज़ों को कलेक्शन में सेव किया जाता है. Cloud Firestore, दस्तावेज़ में पहली बार डेटा जोड़ने पर, कलेक्शन और दस्तावेज़ अपने-आप बना देता है. आपको कलेक्शन या दस्तावेज़ बनाने की ज़रूरत नहीं है.

Cloud Firestore के बारे में ज़्यादा जानने के लिए, Cloud Firestore के दस्तावेज़ में Firestore का इस्तेमाल शुरू करना लेख पढ़ें.

सैंपल

यहां दिए गए उदाहरणों में, ExtensionCallout नीति का इस्तेमाल करके, Cloud Firestore एक्सटेंशन की कार्रवाइयों के लिए सहायता को कॉन्फ़िगर करने का तरीका बताया गया है.

डेटा जोड़ें

नीचे दी गई ExtensionCallout नीति, users कलेक्शन में freewill@example.com नाम का दस्तावेज़ जोड़ती है. data प्रॉपर्टी, नए दस्तावेज़ के फ़ील्ड और वैल्यू के बारे में बताती है.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ConnectorCallout async="false" continueOnError="true" enabled="true" name="Add-User-Data">
    <DisplayName>Add User Data</DisplayName>
    <Connector>my-cloud-firestore-extension</Connector>
    <Action>setDocument</Action>
    <Input><![CDATA[{
        "colName" : "users",
        "docName" : "freewill@example.com",
        "data" : {
            "firstName": "Will",
            "lastName": "Witman",
            "address": "270-8243 Tempor St.",
            "city": "Fort Worth",
            "region": "TX",
            "postalCode": "86519",
            "email": "freewill@example.com",
            "username": "freewill444"
        }
    }]]></Input>
</ConnectorCallout>

डेटा पाना

इस उदाहरण में, ExtensionCallout नीति, users कलेक्शन से freewill@example.com दस्तावेज़ की वैल्यू वापस लाती है. यहां, <Output> एलिमेंट के parsed एट्रिब्यूट को false पर सेट किया गया है, ताकि ऑब्जेक्ट में पार्स किए गए JSON के बजाय, स्ट्रिंग के तौर पर JSON दिखाया जा सके. ज़्यादा जानकारी के लिए, <Output> एलिमेंट का रेफ़रंस देखें.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ConnectorCallout async="false" continueOnError="true" enabled="true" name="Get-User-Data">
    <DisplayName>Get User Data</DisplayName>
    <Connector>straut-cloud-firestore-extension</Connector>
    <Action>getDocument</Action>
    <Input><![CDATA[{
        "colName" : "users",
        "docName" : "freewill@example.com"
    }]]></Input>
    <Output parsed="false">firestore.userdata.retrieved</Output>
</ConnectorCallout>

मैसेज असाइन करें से जुड़ी यह नीति, एक्सटेंशन के जवाब को सेव करने वाले वैरिएबल की वैल्यू का इस्तेमाल करके, जवाब के पेलोड को असाइन करती है.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<AssignMessage name="CopyUserDataToResponse">
    <DisplayName>Copy User Data To Response</DisplayName>
    <AssignTo type="response" createNew="false"/>
    <Set>
        <Payload contentType="application/json">{firestore.userdata.retrieved}</Payload>
    </Set>
</AssignMessage>

डेटा मिटाएं

इस उदाहरण में, ExtensionCallout नीति, users कलेक्शन से lizzie@example.com दस्तावेज़ को मिटा देती है.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ConnectorCallout async="false" continueOnError="true" enabled="true" name="Delete-User-Data">
    <DisplayName>Delete User Data</DisplayName>
    <Connector>my-cloud-firestore-extension</Connector>
    <Action>deleteDocument</Action>
    <Input><![CDATA[{
        "colName" : "users",
        "docName" : "lizzie@example.com"
    }]]></Input>
</ConnectorCallout>

क्वेरी डेटा

इस उदाहरण में, ExtensionCallout नीति, cities कलेक्शन से क्वेरी करती है. क्वेरी के नतीजों को state और population फ़ील्ड के हिसाब से फ़िल्टर किया जाता है. यहां, <Output> एलिमेंट के parsed एट्रिब्यूट को false पर सेट किया गया है, ताकि ऑब्जेक्ट में पार्स किए गए JSON के बजाय, स्ट्रिंग के तौर पर JSON दिखाया जा सके. ज़्यादा जानकारी के लिए, <Output> एलिमेंट का रेफ़रंस देखें.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ConnectorCallout async="false" continueOnError="true" enabled="true" name="Query-City-Data">
    <DisplayName>Query City Data</DisplayName>
    <Connector>cloud-firestore-extension</Connector>
    <Action>query</Action>
    <Input><![CDATA[{
        "colName":"cities",
        "queryArray":[
          ["state", "==", "CA"],
          ["population","<",1000000]
        ]
    }]]></Input>
    <Output parsed="false">compound-query-output</Output>
</ConnectorCallout>

मैसेज असाइन करें से जुड़ी यह नीति, एक्सटेंशन के जवाब को सेव करने वाले वैरिएबल की वैल्यू का इस्तेमाल करके, जवाब के पेलोड को असाइन करती है.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<AssignMessage name="CopyQueryResultsToResponse">
    <DisplayName>Copy Query Results To Response</DisplayName>
    <AssignTo type="response" createNew="false"/>
    <Set>
        <Payload contentType="application/json">{firestore.querydata.retrieved}</Payload>
    </Set>
</AssignMessage>

कार्रवाइयां

deleteDocument

यह किसी कलेक्शन से एक दस्तावेज़ मिटाता है.

अनुरोध के पैरामीटर

<Input><![CDATA[{
  "colName" : "firestore-collection-name",
  "docName" : "firestore-document-name"
}]]></Input>
पैरामीटर ब्यौरा टाइप डिफ़ॉल्ट ज़रूरी है
colName उस कलेक्शन का नाम जिसमें मौजूद दस्तावेज़ को मिटाना है. स्ट्रिंग कोई नहीं. हां.
docName मिटाए जाने वाले दस्तावेज़ का नाम. स्ट्रिंग कोई नहीं. हां.

जवाब

कोई नहीं.

getDocument

यह फ़ंक्शन, किसी एक दस्तावेज़ का कॉन्टेंट वापस लाता है.

अनुरोध के पैरामीटर

<Input><![CDATA[{
  "colName" : "firestore-collection-name",
  "docName" : "firestore-document-name"
}]]></Input>
पैरामीटर ब्यौरा टाइप डिफ़ॉल्ट ज़रूरी है
colName उस कलेक्शन का नाम जिससे दस्तावेज़ को वापस पाना है. स्ट्रिंग कोई नहीं. हां.
docName उस दस्तावेज़ का नाम जिसे वापस पाना है. स्ट्रिंग कोई नहीं. हां.

जवाब

JSON फ़ॉर्मैट में दस्तावेज़ का कॉन्टेंट शामिल करने वाला ऑब्जेक्ट.

क्वेरी

यह फ़ंक्शन, फ़िल्टर बनाने वाली शर्तों के आधार पर किसी कलेक्शन से क्वेरी करता है.

इस कार्रवाई का queryArray पैरामीटर, ऐरे का ऐरे तय करता है. अगर फ़िल्टर करने की कोई शर्त नहीं है, तो यह खाली ऐरे होता है. हर इनर कैटगरी, फ़िल्टर की एक शर्त के बारे में बताती है. एक से ज़्यादा इनर ऐरे, AND ऑपरेटर से जुड़ी एक से ज़्यादा शर्तों को दिखाते हैं.

इनर कंडीशन ऐरे में मौजूद हर एलिमेंट, शर्त का एक हिस्सा होता है. कंडीशन ऐरे में हमेशा ये तीन एलिमेंट होते हैं:

  • बाईं ओर मौजूद एलिमेंट, कलेक्शन फ़ील्ड के बारे में बताता है.
  • बीच का एलिमेंट, जो ऑपरेटर के बारे में बताता है.
  • यह दाईं ओर मौजूद एलिमेंट है. यह कलेक्शन फ़ील्ड की वैल्यू दिखाता है.

इस उदाहरण में, कलेक्शन के state और population फ़ील्ड के आधार पर फ़िल्टर करने के लिए, दो शर्त वाली कैटगरी दी गई हैं:

<Input><![CDATA[{
  "colName":"cities",
  "queryArray":[
    ["state", "==", "CA"],
    ["population","<",1000000]
  ]
}]]></Input>

रनटाइम के दौरान, इस कार्रवाई को इस तरह की क्वेरी के तौर पर समझा जाता है:

उन सभी शहरों को चुनें जहां राज्य = 'CA' और जनसंख्या < 1000000 है

एक से ज़्यादा शर्तों वाली क्वेरी को Cloud Firestore में कंपोज़िट इंडेक्स की मदद से सपोर्ट किया जाना चाहिए. ज़्यादा जानकारी के लिए, Cloud Firestore में इंडेक्स के टाइप लेख पढ़ें.

अनुरोध के पैरामीटर

सिंटैक्स

<Input><![CDATA[{
  "colName" : "firestore-collection-name",
  "queryArray" : "queryArray": query-condition-array
}]]></Input>

उदाहरण

इस उदाहरण में, queryArray पैरामीटर में दो ऐसी शर्तें दी गई हैं जिनके आधार पर, colName पैरामीटर में बताई गई cities कलेक्शन को फ़िल्टर किया जा सकता है.

एक से ज़्यादा शर्तों वाली क्वेरी को Cloud Firestore में कंपोज़िट इंडेक्स की मदद से सपोर्ट किया जाना चाहिए. ज़्यादा जानकारी के लिए, Cloud Firestore में इंडेक्स के टाइप लेख पढ़ें.

<Input><![CDATA[{
  "colName":"cities",
  "queryArray":[["state", "==", "CA"],["population","<",1000000]]
}]]></Input>

रनटाइम के दौरान, इस कार्रवाई को इस तरह की क्वेरी के तौर पर समझा जाता है:

उन सभी शहरों को चुनें जहां राज्य = 'CA' और जनसंख्या < 1000000 है

पैरामीटर ब्यौरा टाइप डिफ़ॉल्ट ज़रूरी है
colName क्वेरी करने के लिए कलेक्शन का नाम. स्ट्रिंग कोई नहीं. हां.
queryArray शर्तों की ऐसी ऐरे जिसमें फ़िल्टर के हिस्सों के बारे में बताया गया हो. शर्तों को हटाने के लिए, एक खाली कलेक्शन तय करें. इससे नतीजे फ़िल्टर नहीं होंगे. Array कोई नहीं. हां.

जवाब

JSON फ़ॉर्मैट में दस्तावेज़ का कॉन्टेंट शामिल करने वाला ऑब्जेक्ट.

setDocument

किसी दस्तावेज़ को Cloud Firestore कलेक्शन में कॉपी करता है. अगर दस्तावेज़ पहले से ही कलेक्शन में मौजूद है, तो यह उसे बदल देगा.

अनुरोध के पैरामीटर

<Input><![CDATA[{
  "colName" : "firestore-collection-name",
  "docName" : "firestore-document-name",
  "data" : "data-to-copy"
}]]></Input>
पैरामीटर ब्यौरा टाइप डिफ़ॉल्ट ज़रूरी है
colName उस कलेक्शन का नाम जिसमें दस्तावेज़ बनाना है. स्ट्रिंग कोई नहीं. हां.
docName उस दस्तावेज़ का नाम जिसमें data को कॉपी किया जाना चाहिए. स्ट्रिंग कोई नहीं. हां.
डेटा docName में कॉपी किया जाने वाला डेटा. यह एक मान्य JSON ऑब्जेक्ट होना चाहिए. ऐरे का इस्तेमाल नहीं किया जा सकता. ऑब्जेक्ट कोई नहीं. नहीं.

जवाब

कोई नहीं.

कॉन्फ़िगरेशन का रेफ़रंस

एपीआई प्रॉक्सी में इस एक्सटेंशन का इस्तेमाल करने के लिए, इसे कॉन्फ़िगर और डिप्लॉय करते समय इनका इस्तेमाल करें. Apigee कंसोल का इस्तेमाल करके एक्सटेंशन को कॉन्फ़िगर करने का तरीका जानने के लिए, एक्सटेंशन जोड़ना और उसे कॉन्फ़िगर करना लेख पढ़ें.

एक्सटेंशन की सामान्य प्रॉपर्टी

हर प्रॉपर्टी के लिए नीचे दी गई प्रॉपर्टी मौजूद हैं.

प्रॉपर्टी जानकारी डिफ़ॉल्ट ज़रूरी है
name वह नाम, जिसे आप एक्सटेंशन का यह कॉन्फ़िगरेशन दे रहे हैं. कभी नहीं हां
packageName एक्सटेंशन पैकेज का नाम, जो Apigee Edge से दिया गया है. कभी नहीं हां
version उस एक्सटेंशन पैकेज का वर्शन नंबर जिससे आपको एक्सटेंशन कॉन्फ़िगर करना है. कभी नहीं हां
configuration आप जिस एक्सटेंशन को जोड़ रहे हैं उसके लिए खास तौर पर कॉन्फ़िगरेशन वैल्यू. इस एक्सटेंशन पैकेज के लिए प्रॉपर्टी देखें कभी नहीं हां

इस एक्सटेंशन पैकेज के लिए प्रॉपर्टी

प्रॉपर्टी ब्यौरा डिफ़ॉल्ट ज़रूरी है
firestoreDB Cloud Firestore डेटाबेस का यूआरएल. अनुरोध करते समय, इस एक्सटेंशन को इसका इस्तेमाल करना चाहिए. यह यूआरएल आम तौर पर https://DATABASE_NAME.firebaseio.com के फ़ॉर्म में होता है. कोई नहीं. हां.
क्रेडेंशियल Apigee Edge कंसोल में डाला गया यह कॉन्टेंट, उस कुंजी फ़ाइल का कॉन्टेंट होता है जिसे आपने Firebase के निर्देशों का पालन करके जनरेट किया था. Management API का इस्तेमाल करके भेजे जाने पर, यह कुंजी फ़ाइल से जनरेट की गई base64-encoded वैल्यू होती है. कोई नहीं. हां.