ส่วนขยาย Google Cloud Firestore

คุณกำลังดูเอกสารประกอบของ Apigee Edge
ไปที่ เอกสารประกอบของ Apigee X
info

เวอร์ชัน: 2.0.2

สร้าง อ่าน หรือลบข้อมูลในฐานข้อมูล Cloud Firestore

เนื้อหานี้มีข้อมูลอ้างอิงสำหรับการกำหนดค่าและการใช้ส่วนขยายนี้ คุณต้องทำสิ่งต่อไปนี้ก่อนใช้ส่วนขยายนี้จากพร็อกซี API

  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>

นโยบาย 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 จะลบเอกสาร 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>

นโยบาย 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

query

ค้นหาคอลเล็กชันโดยระบุเงื่อนไขที่สร้างตัวกรอง

พารามิเตอร์ queryArray ของการดำเนินการนี้จะระบุอาร์เรย์ของอาร์เรย์ (หรืออาร์เรย์ว่างเปล่าสำหรับไม่มีเงื่อนไขการกรอง) อาร์เรย์ภายในแต่ละรายการจะระบุเงื่อนไขของตัวกรอง อาร์เรย์ภายในหลายรายการแสดงถึงเงื่อนไขหลายรายการที่รวมกันด้วยโอเปอเรเตอร์ AND

องค์ประกอบแต่ละรายการในอาร์เรย์เงื่อนไขภายในจะแสดงส่วนหนึ่งของเงื่อนไข อาร์เรย์เงื่อนไขจะมีองค์ประกอบ 3 รายการต่อไปนี้เสมอ

  • องค์ประกอบด้านซ้ายที่ระบุช่องคอลเล็กชัน
  • องค์ประกอบตรงกลางที่ระบุโอเปอเรเตอร์
  • องค์ประกอบด้านขวาที่ระบุค่าช่องคอลเล็กชัน

ตัวอย่างต่อไปนี้ระบุอาร์เรย์เงื่อนไข 2 รายการเพื่อกรองตามช่อง 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 จะระบุเงื่อนไข 2 รายการที่จะใช้กรองคอลเล็กชัน 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 สตริง ไม่มี ได้
data ข้อมูลที่จะคัดลอกลงใน docName ซึ่งต้องเป็นออบเจ็กต์ JSON ที่ถูกต้อง ระบบไม่รองรับอาร์เรย์ ออบเจ็กต์ ไม่มี ไม่

การตอบกลับ

ไม่มี

ข้อมูลอ้างอิงการกำหนดค่า

ใช้ข้อมูลต่อไปนี้เมื่อกำหนดค่าและใช้งานส่วนขยายนี้เพื่อใช้ในพร็อกซี API ดูขั้นตอนการกำหนดค่าส่วนขยายโดยใช้คอนโซล Apigee ได้ที่หัวข้อการเพิ่มและการกำหนดค่าส่วนขยาย

พร็อพเพอร์ตี้ส่วนขยายทั่วไป

พร็อพเพอร์ตี้ต่อไปนี้มีอยู่ในส่วนขยายทุกรายการ

พร็อพเพอร์ตี้ คำอธิบาย ค่าเริ่มต้น ต้องระบุ
name ชื่อที่คุณกําหนดให้การกําหนดค่านี้ของส่วนขยาย ไม่มี ได้
packageName ชื่อแพ็กเกจส่วนขยายที่ระบุโดย Apigee Edge ไม่มี ได้
version หมายเลขเวอร์ชันของแพ็กเกจส่วนขยายที่คุณกําหนดค่าส่วนขยาย ไม่มี ได้
configuration ค่าการกําหนดค่าเฉพาะสําหรับส่วนขยายที่คุณกําลังเพิ่ม ดูพร็อพเพอร์ตี้สําหรับแพ็กเกจส่วนขยายนี้ ไม่มี ได้

พร็อพเพอร์ตี้สำหรับแพ็กเกจส่วนขยายนี้

พร็อพเพอร์ตี้ คำอธิบาย ค่าเริ่มต้น ต้องระบุ
firestoreDB URL ไปยังฐานข้อมูล Cloud Firestore ที่ส่วนขยายนี้ควรใช้เมื่อส่งคำขอ โดยปกติ URL นี้จะมีรูปแบบ https://DATABASE_NAME.firebaseio.com ไม่มี ได้
credentials เมื่อป้อนในคอนโซล Apigee Edge นี่คือเนื้อหาของไฟล์คีย์ที่คุณสร้างขึ้นตามวิธีการของ Firebase เมื่อส่งโดยใช้ Management API จะเป็นค่าที่เข้ารหัส Base64 ซึ่งสร้างจากไฟล์คีย์ ไม่มี ได้