ส่วนขยาย 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 policy จะเรียกค่าของเอกสาร 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>

ในรันไทม์ ระบบจะตีความการดำเนินการนี้เป็นการค้นหา เช่น การค้นหาต่อไปนี้

เลือกเมืองทั้งหมดที่ state = 'CA' และ population < 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>

ในรันไทม์ ระบบจะตีความการดำเนินการนี้เป็นการค้นหา เช่น การค้นหาต่อไปนี้

เลือกเมืองทั้งหมดที่ state = 'CA' และ population < 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 ซึ่งสร้างจากไฟล์คีย์ ไม่มี ได้