إضافة Google Cloud Firestore

أنت تعرض مستندات Apigee Edge.
انتقل إلى مستندات Apigee X.
معلومات

الإصدار: 1.2.0

إنشاء البيانات أو قراءتها أو حذفها في قاعدة بيانات Cloud Firestore

يوفّر هذا المحتوى مرجعًا لإعداد هذه الإضافة واستخدامها. قبل استخدام هذه الإضافة من خادم وكيل لواجهة برمجة التطبيقات، عليك تنفيذ ما يلي:

  1. أنشئ مشروع Firebase من خلال وحدة تحكُّم Firebase حيث يتم تخزين بياناتك.

  2. إنشاء مفتاح لحساب الخدمة

  3. استخدِم محتوى ملف JSON للمفتاح الناتج عند إضافة الإضافة وضبطها باستخدام مرجع الإعدادات.

لمحة عن Cloud Firestore

تخزِّن Cloud Firestore البيانات في المستندات التي يتم تخزينها في مجموعات. تنشئ Cloud Firestore المجموعات والمستندات بشكل ضمني في المرة الأولى التي تضيف فيها بيانات إلى المستند. لست بحاجة إلى إنشاء مجموعات أو مستندات بشكل صريح.

للحصول على مزيد من المعلومات حول Cloud Firestore بشكل عام، يُرجى الاطّلاع على بدء استخدام Firestore في مستندات Cloud Firestore.

نماذج

توضّح الأمثلة التالية كيفية ضبط التوافق مع إجراءات إضافات Cloud Firestore باستخدام سياسة ExtensionCallout.

إضافة بيانات

تضيف سياسة ExtensionCallout مستندًا باسم 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>

الحصول على البيانات

في هذا المثال، تسترد سياسة ExtensionCallout قيمة مستند freewill@example.com من المجموعة users. في هذا المثال، يتم ضبط السمة parsed للعنصر <Output> على 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 المستند lizzie@example.com من مجموعة users.

<?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. في هذا المثال، يتم ضبط السمة parsed للعنصر <Output> على 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.

query

طلبات بحث عن مجموعة من خلال شروط التحديد التي تشكِّل فلترًا.

تحدّد مَعلمة 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 يشير ذلك المصطلح إلى مصفوفة من مصفوفات الشروط التي تحدِّد معًا أجزاء الفلتر. حدِّد صفيفًا فارغًا لحذف الشروط (وليس فلترة النتائج). مصفوفة بلا عُري نعم.

الرد

عنصر يحتوي على محتوى المستند بتنسيق 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 عنوان URL لقاعدة بيانات Cloud Firestore التي يجب أن تستخدمها هذه الإضافة أثناء إجراء الطلبات. يظهر عنوان URL هذا عادةً بالشكل https://DATABASE_NAME.firebaseio.com. بلا عُري نعم.
بيانات الاعتماد عند إدخال هذا المحتوى في وحدة تحكُّم Apigee Edge، يكون هذا هو محتوى ملف المفتاح الذي أنشأته باستخدام تعليمات Firebase. وعند إرسالها عبر واجهة برمجة تطبيقات الإدارة، تكون قيمة بترميز base64 يتم إنشاؤها من ملف المفتاح. بلا عُري نعم.