Google Cloud Firestore Uzantısı

Apigee Edge belgelerini görüntülüyorsunuz.
Apigee X belgelerine gidin.
info

Sürüm: 2.0.0

Cloud Firestore veritabanında veri oluşturma, okuma veya silme

Bu içerikte, bu uzantıyı yapılandırma ve kullanmayla ilgili referanslar sağlanmaktadır. Bu uzantıyı bir API proxy'sinden kullanmadan önce:

  1. Verilerinizin depolandığı Firebase konsolunda bir Firebase projesi oluşturun.

  2. Hizmet hesabı için bir anahtar oluşturun.

  3. Yapılandırma referansını kullanarak uzantıyı ekleyip yapılandırırken elde edilen anahtar JSON dosyasının içeriğini kullanın.

Cloud Firestore hakkında

Cloud Firestore, verileri koleksiyonlarda depolanan belgelerde saklar. Cloud Firestore, belgeye ilk kez veri eklediğinizde koleksiyonları ve belgeleri dolaylı olarak oluşturur. Koleksiyon veya doküman oluşturmanız gerekmez.

Cloud Firestore hakkında genel bilgi edinmek için Cloud Firestore dokümanlarında Firestore'u kullanmaya başlama başlıklı makaleyi inceleyin.

Örnekler

Aşağıdaki örneklerde, ExtensionCallout politikası kullanılarak Cloud Firestore uzantı işlemleri için desteğin nasıl yapılandırılacağı gösterilmektedir.

Veri ekle

Aşağıdaki ExtensionCallout politikası, users koleksiyonuna freewill@example.com adlı bir doküman ekler. data mülkü, yeni dokümanın alanlarını ve değerlerini belirtir.

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

Veri alma

Bu örnekte ExtensionCallout politikası, users koleksiyonundan freewill@example.com belgesinin değerini alır. Burada, <Output> öğesinin parsed özelliği false olarak ayarlanmıştır. Böylece döndürülen sonuç, nesneye ayrıştırılmış JSON yerine JSON dizesi olur. Daha fazla bilgi için <Output> öğesi referansına bakın.

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

Aşağıdaki Mesaj Ata politikası, yanıt yükü atamak için uzantının yanıtını depolayan değişkenin değerini kullanır.

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

Verileri sil

Bu örnekte, ExtensionCallout politikası, users koleksiyonundaki lizzie@example.com dokümanını siler.

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

Veri sorgulama

Bu örnekte, ExtensionCallout politikası bir cities koleksiyonunu sorguladı. Sorgu sonuçları state ve population alanlarına göre filtrelenir. Burada, <Output> öğesinin parsed özelliği false olarak ayarlanmıştır. Böylece döndürülen sonuç, nesneye ayrıştırılmış JSON yerine JSON dizesi olur. Daha fazla bilgi için <Output> öğesi referansına bakın.

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

Aşağıdaki Mesaj Ata politikası, yanıt yükü atamak için uzantının yanıtını depolayan değişkenin değerini kullanır.

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

İşlemler

deleteDocument

Koleksiyondan tek bir dokümanı siler.

İstek parametreleri

<Input><![CDATA[{
  "colName" : "firestore-collection-name",
  "docName" : "firestore-document-name"
}]]></Input>
Parametre Açıklama Tür Varsayılan Zorunlu
colName Silinecek belgeyi içeren koleksiyonun adı. Dize Yok. Evet.
docName Silinecek dokümanın adı. Dize Yok. Evet.

Yanıt

Yok.

getDocument

Tek bir dokümanın içeriğini getirir.

İstek parametreleri

<Input><![CDATA[{
  "colName" : "firestore-collection-name",
  "docName" : "firestore-document-name"
}]]></Input>
Parametre Açıklama Tür Varsayılan Zorunlu
colName Belgenin alınacağı koleksiyonun adı. Dize Yok. Evet.
docName Alınacak dokümanın adı. Dize Yok. Evet.

Yanıt

Dokümanın içeriğini JSON biçiminde içeren nesne.

sorgu

Filtre oluşturan koşulları belirterek bir koleksiyonu sorgulayan işlevdir.

Bu işlemin queryArray parametresi, bir dizi dizisi (veya filtreleme koşulu olmayan boş bir dizi) belirtir. Her iç dizi, bir filtrenin koşulunu belirtir. Birden fazla iç dizi, AND operatörüyle birleştirilen birden fazla koşulu temsil eder.

Dahili koşul dizisindeki her öğe, koşulun bir bölümünü temsil eder. Koşul dizisi her zaman aşağıdaki üç öğeyi içerir:

  • Koleksiyon alanını belirten bir sol öğe.
  • Operatörü belirten bir orta öğe.
  • Koleksiyon alanı değerini belirten bir sağ öğe.

Aşağıdaki örnekte, koleksiyonun state ve population alanlarına göre filtrelenecek iki koşul dizisi belirtilmektedir:

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

Bu işlem, çalışma zamanında aşağıdaki gibi bir sorgu olarak yorumlanır:

state = "CA" ve population < 1000000 olan tüm şehirleri seçin

Birden fazla koşul içeren bir sorgu, Cloud Firestore'da bir bileşik dizin tarafından desteklenmelidir. Daha fazla bilgi için Cloud Firestore'daki dizin türleri başlıklı makaleyi inceleyin.

İstek parametreleri

Söz dizimi

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

Örnek

Bu örnekte queryArray parametresi, colName parametresi tarafından belirtilen cities koleksiyonunun filtreleneceği iki koşulu belirtir.

Birden fazla koşul içeren bir sorgu, Cloud Firestore'da bir bileşik dizin tarafından desteklenmelidir. Daha fazla bilgi için Cloud Firestore'daki dizin türleri başlıklı makaleyi inceleyin.

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

Bu işlem, çalışma zamanında aşağıdaki gibi bir sorgu olarak yorumlanır:

state = "CA" ve population < 1000000 olan tüm şehirleri seçin

Parametre Açıklama Tür Varsayılan Zorunlu
colName Sorgulanacak koleksiyonun adı. Dize Yok. Evet.
queryArray Birlikte bir filtrenin bölümlerini belirten koşul dizileri dizisi. Koşulları (sonuçları filtrelemeyi değil) atlamak için boş bir dizi belirtin. Dizi Yok. Evet.

Yanıt

Dokümanın içeriğini JSON biçiminde içeren nesne.

setDocument

Bir dokümanı Cloud Firestore koleksiyonuna kopyalar. Doküman koleksiyonda zaten mevcutsa üzerine yazılır.

İstek parametreleri

<Input><![CDATA[{
  "colName" : "firestore-collection-name",
  "docName" : "firestore-document-name",
  "data" : "data-to-copy"
}]]></Input>
Parametre Açıklama Tür Varsayılan Zorunlu
colName Belgenin oluşturulacağı koleksiyonun adı. Dize Yok. Evet.
docName data öğesinin kopyalanacağı dokümanın adı. Dize Yok. Evet.
aktarma docName'e kopyalanacak veriler. Bu, geçerli bir JSON nesnesi olmalıdır. Dizeler desteklenmez. Nesne Yok. Sıra

Yanıt

Yok.

Yapılandırma Referansı

Bu uzantıyı API proxy'lerinde kullanılmak üzere yapılandırırken ve dağıtırken aşağıdakileri kullanın. Apigee konsolunu kullanarak bir uzantıyı yapılandırma adımları için Uzantı ekleme ve yapılandırma başlıklı makaleyi inceleyin.

Ortak uzantı özellikleri

Aşağıdaki özellikler her uzantı için mevcuttur.

Mülk Açıklama Varsayılan Zorunlu
name Uzantının bu yapılandırmasını verdiğiniz ad. Yok Evet
packageName Apigee Edge'in sağladığı uzantı paketinin adı. Yok Evet
version Uzantıyı yapılandırdığınız uzantı paketinin sürüm numarası. Yok Evet
configuration Eklediğiniz uzantıya özgü yapılandırma değeri. Bu uzantı paketinin özellikleri başlıklı makaleyi inceleyin Yok Evet

Bu uzantı paketine ait özellikler

Mülk Açıklama Varsayılan Zorunlu
firestoreDB Bu uzantının istek gönderirken kullanması gereken Cloud Firestore veritabanının URL'si. Bu URL genellikle https://DATABASE_NAME.firebaseio.com biçimindedir. Yok. Evet.
giriş bilgileri Apigee Edge konsoluna girildiğinde, Firebase talimatlarıyla oluşturduğunuz anahtar dosyasının içeriğidir. Yönetim API'si üzerinden gönderildiğinde, anahtar dosyasından oluşturulan base64 kodlu bir değerdir. Yok. Evet.