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 utama 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 artikel Memulai Firestore di dokumentasi Cloud Firestore.

Contoh

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

Tambahkan data

Kebijakan ExtensionKeterangan 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> ditetapkan ke false sehingga hasil yang ditampilkan akan berupa JSON sebagai string, bukan JSON yang diuraikan menjadi objek. Untuk mengetahui 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 ExtensionInfo mengkueri koleksi cities. Hasil kueri difilter menurut kolom state dan population. Di sini, atribut parsed elemen <Output> ditetapkan ke false sehingga hasil yang ditampilkan akan berupa JSON sebagai string, bukan JSON yang diuraikan menjadi objek. Untuk mengetahui 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 konten dari satu dokumen.

Parameter permintaan

<Input><![CDATA[{
  "colName" : "firestore-collection-name",
  "docName" : "firestore-document-name"
}]]></Input>
Parameter Deskripsi Jenis Default Wajib
colName Nama koleksi tempat mengambil dokumen. 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 kumpulan dengan menentukan kondisi yang membentuk filter.

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

Setiap elemen dalam array kondisi bagian 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 ditafsirkan sebagai kueri seperti berikut:

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

Kueri yang mencakup beberapa kondisi harus didukung di Cloud Firestore dengan indeks gabungan. 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 menetapkan dua kondisi untuk memfilter koleksi cities yang ditentukan oleh parameter colName.

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

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

Saat runtime, tindakan ini ditafsirkan sebagai kueri seperti berikut:

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

Parameter Deskripsi Jenis Default Wajib
colName Nama koleksi yang akan dikueri. String Tidak ada. Ya.
queryArray Array array kondisi yang, bersama-sama, menentukan bagian filter. Tentukan 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 tersebut sudah ada dalam koleksi, tindakan ini akan menimpa dokumen tersebut.

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 ke mana data harus disalin. String Tidak ada. Ya.
data Data yang akan disalin ke docName. Objek ini harus berupa objek JSON yang valid. Array tidak didukung. Objek 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 mengetahui langkah-langkah dalam 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.
credentials Saat dimasukkan ke konsol Apigee Edge, ini adalah isi file kunci yang Anda buat dengan petunjuk Firebase. Saat dikirim melalui API pengelolaan, nilai ini berenkode base64 yang dihasilkan dari file kunci. Tidak ada. Ya.