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

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

वर्शन: 1.4.1

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 को ऑब्जेक्ट में पार्स करने के बजाय, स्ट्रिंग के तौर पर दिखाया जा सके. ज़्यादा जानकारी के लिए, <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 को ऑब्जेक्ट में पार्स करने के बजाय, स्ट्रिंग के तौर पर दिखाया जा सके. ज़्यादा जानकारी के लिए, <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 console का इस्तेमाल करके एक्सटेंशन को कॉन्फ़िगर करने का तरीका जानने के लिए, एक्सटेंशन जोड़ना और कॉन्फ़िगर करना लेख पढ़ें.

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

The following properties are present for every extension.

Property Description Default Required
name Name you're giving this configuration of the extension. None Yes
packageName Name of the extension package as given by Apigee Edge. None Yes
version Version number for the extension package from which you're configuring an extension. None Yes
configuration Configuration value specific to the extension you're adding. See Properties for this extension package None Yes

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

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