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

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

वर्शन: 1.4.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>

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

उन सभी शहरों को चुनें जहां state = 'CA' और population < 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>

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

उन सभी शहरों को चुनें जहां state = 'CA' और population < 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 को कॉपी किया जाना चाहिए. स्ट्रिंग कोई नहीं. हां.
data docName में कॉपी किया जाने वाला डेटा. यह एक मान्य JSON ऑब्जेक्ट होना चाहिए. इसमें अरे का इस्तेमाल नहीं किया जा सकता. ऑब्जेक्ट कोई नहीं. नहीं.

जवाब

कोई नहीं.

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

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

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

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

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

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

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