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

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

वर्शन: 1.4.1

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

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

  1. Firebase कंसोल पर Firebase प्रोजेक्ट बनाएं, जहां आपका डेटा सेव किया जाता है.

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

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

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

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

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

सैंपल

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

डेटा जोड़ें

नीचे दी गई एक्सटेंशन कॉलआउट नीति, freewill@example.com नाम के दस्तावेज़ को users कलेक्शन में जोड़ती है. 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>

डेटा पाएं

इस उदाहरण में, एक्सटेंशन कॉलआउट की नीति, 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>

डेटा मिटाएं

इस उदाहरण में, एक्सटेंशन कॉलआउट की नीति, 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>

क्वेरी डेटा

इस उदाहरण में, एक्सटेंशन कॉलआउट नीति, 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>
पैरामीटर ब्यौरा Type डिफ़ॉल्ट ज़रूरी है
colName उस कलेक्शन का नाम जिसमें वह दस्तावेज़ है जिसे आपको मिटाना है. String कोई नहीं. हां.
docName मिटाए जाने वाले दस्तावेज़ का नाम. String कोई नहीं. हां.

जवाब

कोई नहीं.

getDocument

एक दस्तावेज़ की सामग्री वापस लाता है.

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

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

जवाब

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

query

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

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

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

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

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

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

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

वे सभी शहर चुनें जहां राज्य = 'CA' और जनसंख्या < 10,00,000 है

कई शर्तों वाली क्वेरी को 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' और जनसंख्या < 10,00,000 है

पैरामीटर ब्यौरा Type डिफ़ॉल्ट ज़रूरी है
colName क्वेरी करने वाले कलेक्शन का नाम. String कोई नहीं. हां.
queryArray शर्त से जुड़े कलेक्शन का कलेक्शन, जो एक साथ मिलकर किसी फ़िल्टर के हिस्सों की जानकारी देता है. शर्तों को छोड़ने के लिए, एक खाली कलेक्शन डालें (नतीजे फ़िल्टर न करें). Array कोई नहीं. हां.

जवाब

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

setDocument

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

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

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

जवाब

कोई नहीं.

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

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

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

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

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

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

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