Ekstensi Google Cloud Firestore

Anda sedang melihat dokumentasi Apigee Edge.
Buka dokumentasi Apigee X.
info

Versi: 1.4.1

Membuat, membaca, atau menghapus data di database Cloud Firestore.

Konten ini menyediakan referensi untuk mengonfigurasi dan menggunakan ekstensi ini. Sebelum menggunakan ekstensi ini dari proxy API, Anda harus:

  1. Buat project Firebase di Firebase console tempat data Anda disimpan.

  2. Buat kunci untuk akun layanan.

  3. Gunakan konten file JSON kunci yang dihasilkan saat menambahkan dan mengonfigurasi ekstensi menggunakan referensi konfigurasi.

Tentang Cloud Firestore

Cloud Firestore menyimpan data dalam dokumen, yang disimpan dalam koleksi. Cloud Firestore membuat koleksi dan dokumen secara implisit saat pertama kali data ditambahkan ke dokumen. Anda tidak perlu membuat koleksi atau dokumen secara eksplisit.

Untuk mengetahui informasi selengkapnya tentang Cloud Firestore secara umum, baca bagian Memulai Firestore di dokumentasi Cloud Firestore.

Contoh

Contoh berikut menggambarkan cara mengonfigurasi dukungan untuk tindakan ekstensi Cloud Firestore menggunakan kebijakan Extensioncallout.

Tambahkan data

Kebijakan ExtensionCallout berikut menambahkan dokumen bernama freewill@example.com ke koleksi users. Properti data menentukan kolom dan nilai dokumen baru.

<?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>

Mendapatkan data

Dalam contoh ini, kebijakan ExtensionCallout mengambil nilai dokumen freewill@example.com dari koleksi users. Di sini, atribut parsed elemen <Output> disetel ke false sehingga hasil yang ditampilkan adalah JSON sebagai string, bukan JSON yang diurai menjadi objek. Untuk mengetahui informasi selengkapnya, lihat referensi elemen <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>

Kebijakan Tetapkan Pesan berikut menggunakan nilai variabel yang menyimpan respons ekstensi untuk menetapkan payload respons.

<?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>

Menghapus data

Dalam contoh ini, kebijakan ExtensionCallout menghapus dokumen lizzie@example.com dari koleksi 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>

Data kueri

Dalam contoh ini, kebijakan ExtensionCallout membuat kueri koleksi cities. Hasil kueri difilter menurut kolom state dan population. Di sini, atribut parsed elemen <Output> disetel ke false sehingga hasil yang ditampilkan adalah JSON sebagai string, bukan JSON yang diurai menjadi objek. Untuk mengetahui informasi selengkapnya, lihat referensi elemen <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>

Kebijakan Tetapkan Pesan berikut menggunakan nilai variabel yang menyimpan respons ekstensi untuk menetapkan payload respons.

<?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>

Tindakan

deleteDocument

Menghapus satu dokumen dari koleksi.

Parameter permintaan

<Input><![CDATA[{
  "colName" : "firestore-collection-name",
  "docName" : "firestore-document-name"
}]]></Input>
Parameter Deskripsi Jenis Default Wajib
colName Nama koleksi yang berisi dokumen yang akan dihapus. String Tidak ada. Ya.
docName Nama dokumen yang akan dihapus. String Tidak ada. Ya.

Respons

Tidak ada.

getDocument

Mengambil isi sebuah dokumen.

Parameter permintaan

<Input><![CDATA[{
  "colName" : "firestore-collection-name",
  "docName" : "firestore-document-name"
}]]></Input>
Parameter Deskripsi Jenis Default Wajib
colName Nama koleksi tempat dokumen akan diambil. String Tidak ada. Ya.
docName Nama dokumen yang akan diambil. String Tidak ada. Ya.

Respons

Objek yang berisi konten dokumen dalam format JSON.

kueri

Mengkueri koleksi dengan menentukan kondisi yang membentuk filter.

Parameter queryArray tindakan ini menentukan array array (atau array kosong jika tanpa kondisi pemfilteran). Setiap array dalam menentukan kondisi filter. Beberapa array dalam mewakili beberapa kondisi yang digabungkan dengan operator AND.

Setiap elemen dalam array kondisi dalam mewakili bagian dari kondisi. Array kondisi selalu memiliki tiga elemen berikut:

  • Elemen kiri yang menentukan kolom koleksi.
  • Elemen tengah yang menentukan operator.
  • Elemen kanan yang menentukan nilai kolom koleksi.

Contoh berikut menentukan dua array kondisi yang akan difilter berdasarkan kolom state dan population koleksi:

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

Saat runtime, tindakan ini diinterpretasikan sebagai kueri seperti berikut:

Pilih semua kota dengan negara bagian = 'CA' dan populasi < 1000000

Kueri yang mencakup beberapa kondisi harus didukung di Cloud Firestore oleh indeks komposit. Untuk mengetahui informasi selengkapnya, lihat Jenis indeks di Cloud Firestore.

Parameter permintaan

Sintaksis

<Input><![CDATA[{
  "colName" : "firestore-collection-name",
  "queryArray" : "queryArray": query-condition-array
}]]></Input>

Contoh

Dalam contoh ini, parameter queryArray menentukan dua kondisi untuk memfilter koleksi cities yang ditentukan oleh parameter colName.

Kueri yang mencakup beberapa kondisi harus didukung di Cloud Firestore oleh indeks komposit. Untuk mengetahui informasi selengkapnya, lihat Jenis indeks di Cloud Firestore.

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

Saat runtime, tindakan ini diinterpretasikan sebagai kueri seperti berikut:

Pilih semua kota dengan negara bagian = 'CA' dan populasi < 1000000

Parameter Deskripsi Jenis Default Wajib
colName Nama koleksi yang akan dikueri. String Tidak ada. Ya.
queryArray Array dari array kondisi yang, bersama-sama, menentukan bagian filter. Menentukan array kosong untuk menghilangkan kondisi (bukan hasil filter). Array Tidak ada. Ya.

Respons

Objek yang berisi konten dokumen dalam format JSON.

setDocument

Menyalin dokumen ke dalam koleksi Cloud Firestore. Jika dokumen sudah ada dalam koleksi, tindakan ini akan menimpanya.

Parameter permintaan

<Input><![CDATA[{
  "colName" : "firestore-collection-name",
  "docName" : "firestore-document-name",
  "data" : "data-to-copy"
}]]></Input>
Parameter Deskripsi Jenis Default Wajib
colName Nama koleksi tempat dokumen akan dibuat. String Tidak ada. Ya.
docName Nama dokumen yang data harus disalin. String Tidak ada. Ya.
data Data yang akan disalin ke docName. Ini harus berupa objek JSON yang valid. Array tidak didukung. Object Tidak ada. Tidak.

Respons

Tidak ada.

Referensi Konfigurasi

Gunakan hal berikut saat Anda mengonfigurasi dan men-deploy ekstensi ini untuk digunakan di proxy API. Untuk langkah-langkah mengonfigurasi ekstensi menggunakan konsol Apigee, lihat Menambahkan dan mengonfigurasi ekstensi.

Properti ekstensi umum

Properti berikut ada untuk setiap ekstensi.

Properti Deskripsi Default Wajib
name Nama yang Anda berikan pada konfigurasi ekstensi ini. Tidak ada Ya
packageName Nama paket ekstensi seperti yang diberikan oleh Apigee Edge. Tidak ada Ya
version Nomor versi untuk paket ekstensi tempat Anda mengonfigurasi ekstensi. Tidak ada Ya
configuration Nilai konfigurasi khusus untuk ekstensi yang Anda tambahkan. Lihat Properti untuk paket ekstensi ini Tidak ada Ya

Properti untuk paket ekstensi ini

Properti Deskripsi Default Wajib
firestoreDB URL ke database Cloud Firestore yang harus digunakan ekstensi ini saat membuat permintaan. URL ini biasanya berbentuk https://DATABASE_NAME.firebaseio.com. Tidak ada. Ya.
kredensial Saat dimasukkan di konsol Apigee Edge, ini adalah isi file kunci yang Anda buat dengan petunjuk Firebase. Saat dikirim melalui API pengelolaan, nilai tersebut adalah nilai berenkode base64 yang dihasilkan dari file kunci. Tidak ada. Ya.