إضافة 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 بشكل عام، يُرجى الاطّلاع على مقالة بدء استخدام 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>
المَعلمة الوصف Type تلقائي مطلوبة
colName اسم المجموعة التي تحتوي على المستند المطلوب حذفه. سلسلة بلا عُري نعم.
docName اسم المستند الذي تريد حذفه. سلسلة بلا عُري نعم.

الإجابة

بلا عُري

getDocument

استرداد محتوى مستند واحد

مَعلمات الطلب

<Input><![CDATA[{
  "colName" : "firestore-collection-name",
  "docName" : "firestore-document-name"
}]]></Input>
المَعلمة الوصف Type تلقائي مطلوبة
colName اسم المجموعة المطلوب استرداد المستند منها. سلسلة بلا عُري نعم.
docName اسم المستند المطلوب استرداده. سلسلة بلا عُري نعم.

الإجابة

كائن يحتوي على محتوى المستند بتنسيق JSON.

query

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

تحدّد المَعلمة queryArray لهذا الإجراء مصفوفة من المصفوفات (أو مصفوفة فارغة في حال عدم توفّر شروط فلترة). يحدد كل صفيف داخلي شرطًا لأحد الفلاتر. تمثل المصفوفات الداخلية المتعددة شروطًا متعددة يربطها عامل AND.

يمثل كل عنصر في صفيفة شرط داخلية جزءًا من الشرط. تحتوي صفيفة الشروط دائمًا على العناصر الثلاثة التالية:

  • عنصر أيسر يحدّد حقل المجموعة.
  • عنصر في الوسط يحدِّد عامل التشغيل.
  • عنصر يمين يحدّد قيمة حقل المجموعة.

يحدّد المثال التالي صفيفَي شرط للفلترة استنادًا إلى حقلَي state وpopulation في المجموعة:

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

في وقت التشغيل، يتم تفسير هذا الإجراء كطلب بحث كما يلي:

حدد جميع المدن التي فيها الولاية = "كاليفورنيا" وسكانها < 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>

في وقت التشغيل، يتم تفسير هذا الإجراء كطلب بحث كما يلي:

حدد جميع المدن التي فيها الولاية = "كاليفورنيا" وسكانها < 1000000

المَعلمة الوصف Type تلقائي مطلوبة
colName اسم المجموعة المطلوب البحث عنها. سلسلة بلا عُري نعم.
queryArray يشير ذلك المصطلح إلى مصفوفة من صفائف الشرط التي تحدِّد معًا أجزاء الفلتر. حدِّد صفيفًا فارغًا لحذف الشروط (وليس فلترة النتائج). مصفوفة بلا عُري نعم.

الإجابة

كائن يحتوي على محتوى المستند بتنسيق JSON.

setDocument

لنسخ مستند إلى مجموعة Cloud Firestore. إذا كان المستند متوفرًا من قبل في المجموعة، سيؤدي ذلك إلى استبداله.

مَعلمات الطلب

<Input><![CDATA[{
  "colName" : "firestore-collection-name",
  "docName" : "firestore-document-name",
  "data" : "data-to-copy"
}]]></Input>
المَعلمة الوصف Type تلقائي مطلوبة
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 يتم إنشاؤها من ملف المفتاح. بلا عُري نعم.