ส่วนขยาย Google Cloud Firestore

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

เวอร์ชัน: 2.0.0

สร้าง อ่าน หรือลบข้อมูลในฐานข้อมูล 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>

นโยบายกำหนดข้อความต่อไปนี้ใช้ค่าของตัวแปรที่จัดเก็บคำตอบของส่วนขยายเพื่อกำหนดเพย์โหลดคำตอบ

<?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 policy จะค้นหาคอลเล็กชัน 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

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

การตอบกลับ

ไม่มี

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

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

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

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

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

พร็อพเพอร์ตี้ของแพ็กเกจส่วนขยายนี้

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