ส่วนขยาย Google Cloud Firestore

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

เวอร์ชัน: 1.4.1

สร้าง อ่าน หรือลบข้อมูลในฐานข้อมูล 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' และประชากร < 1,000,000

การค้นหาที่มีเงื่อนไขหลายรายการต้องได้รับการรองรับใน 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' และประชากร < 1,000,000

พารามิเตอร์ คำอธิบาย ประเภท ค่าเริ่มต้น ต้องระบุ
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 ซึ่งสร้างจากไฟล์คีย์ ไม่มี ได้