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

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

वर्शन: 2.0.2

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>

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

<?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>

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

<?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 पैरामीटर, cities कलेक्शन को फ़िल्टर करने के लिए दो शर्तें तय करता है. यह कलेक्शन, colName पैरामीटर से तय होता है.

एक से ज़्यादा शर्तों वाली क्वेरी को 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 वैल्यू होती है. कोई नहीं. हां.