Google Cloud Firestore Uzantısı

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

Sürüm: 1.4.1

Cloud Firestore veritabanında veri oluşturun, mevcut verileri okuyun veya silin.

Bu içerik, bu uzantıyı yapılandırmak ve kullanmak için referans sağlar. Bu uzantıyı bir API proxy'sinden kullanmadan önce şunları yapmanız gerekir:

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

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

  3. Uzantıyı yapılandırma referansını kullanarak 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 dokümanlarda depolar. Cloud Firestore, belgeye ilk kez veri eklediğinizde koleksiyon ve belgeleri gizli olarak oluşturur. Açıkça koleksiyon veya doküman oluşturmanız gerekmez.

Cloud Firestore hakkında genel olarak daha fazla bilgi edinmek için Cloud Firestore belgelerindeki Firestore'u kullanmaya başlama bölümüne bakın.

Sana Özel

Aşağıdaki örneklerde, Extension callout 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 ExtensionExtension politikası, bir users koleksiyonuna freewill@example.com adlı bir doküman ekler. data özelliği, 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>

Verileri al

Bu örnekte, ExtensionDestination politikası, freewill@example.com dokümanının değerini users koleksiyonundan alır. Burada, <Output> öğesinin parsed özelliği false olarak ayarlanır. Böylece döndürülen sonuç, bir nesneye ayrıştırılan JSON yerine dize olarak JSON 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ünü 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 örnekteki ExtensionDescription politikası, lizzie@example.com dokümanını users koleksiyonundan 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, Extension callout politikası bir cities koleksiyonunu sorgular. Sorgu sonuçları state ve population alanlarına göre filtrelenir. Burada, <Output> öğesinin parsed özelliği false olarak ayarlanır. Böylece döndürülen sonuç, bir nesneye ayrıştırılan JSON yerine dize olarak JSON 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ünü 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 Gerekli
colName Silinecek dokümanı 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 alır.

İstek parametreleri

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

Yanıt

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

sorgu

Filtre oluşturan koşulları belirterek koleksiyonu sorgular.

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

Bir iç koşul dizisindeki her öğe, koşulun bir bölümünü temsil eder. Bir koşul dizisi her zaman aşağıdaki üç öğeye sahiptir:

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

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

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

Eyalet = "CA" ve nüfusu < 1000000 olan tüm şehirleri seçin

Birden çok koşul içeren sorgular, Cloud Firestore'da bileşik dizin tarafından desteklenmelidir. Daha fazla bilgi için Cloud Firestore'daki dizin türleri bölümünü inceleyin.

İstek parametreleri

Söz dizimi

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

Örnek

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

Birden fazla koşul içeren sorgular, Cloud Firestore'da bileşik dizin tarafından desteklenmelidir. Daha fazla bilgi için Cloud Firestore'daki dizin türleri bölümünü 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:

Eyalet = "CA" ve nüfusu < 1000000 olan tüm şehirleri seçin

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

Yanıt

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

setDocument

Bir dokümanı Cloud Firestore koleksiyonuna kopyalar. Doküman koleksiyonda zaten bulunuyorsa bu işlem dokümanın ü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 Gerekli
colName Belgenin oluşturulacağı koleksiyonun adı. Dize Yok. Evet.
docName data öğesinin kopyalanacağı dokümanın adı. Dize Yok. Evet.
veri docName içine kopyalanacak veriler. Bu geçerli bir JSON nesnesi olmalıdır. Diziler desteklenmez. Nesne Yok. Hayır

Yanıt

Yok.

Yapılandırma Referansı

Bu uzantıyı API proxy'lerinde kullanmak üzere yapılandırırken ve dağıtırken aşağıdakileri kullanın. Apigee konsolunu kullanarak uzantı yapılandırma adımları için Uzantı ekleme ve yapılandırma bölümüne bakın.

Sık kullanılan 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ı paketinin özellikleri

Özellik Açıklama Varsayılan Gerekli
firestoreDB Bu uzantının istekte bulunarak kullanılması gereken Cloud Firestore veritabanı URL'si. Bu URL genellikle https://DATABASE_NAME.firebaseio.com biçimini alır. Yok. Evet.
giriş bilgileri Burada, Apigee Edge konsoluna girildiğinde Firebase talimatlarıyla oluşturduğunuz anahtar dosyasının içeriği gösterilir. Yönetim API'si ile gönderildiğinde, anahtar dosyasından oluşturulan base64 kodlu bir değerdir. Yok. Evet.