Google Cloud Firestore Uzantısı

Apigee Edge belgelerini görüntülüyorsunuz.
. Git: Apigee X belgeleri.
bilgi

Sürüm: 1.4.1

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

Bu içerik, bu uzantının yapılandırılması ve kullanılması için referans sağlamaktadır. 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. Yapılandırma referansını kullanarak uzantıyı eklerken ve yapılandırırken sonuçta ortaya çıkan anahtar JSON dosyasının içeriğini kullanın.

Cloud Firestore hakkında

Cloud Firestore, verileri belgelerde depolar ve bu belgeler koleksiyonlarda saklanır. Cloud Firestore, belgeye ilk kez veri eklediğinizde koleksiyonları ve belgeleri dolaylı olarak oluşturur. Açıkça koleksiyon veya doküman oluşturmanız gerekmez.

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

Örnekler

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

Veri alın

Bu örnekte, ExtensionDescription politikası users koleksiyonundan freewill@example.com dokümanının değerini alıyor. Burada <Output> öğesinin parsed özelliği false olarak ayarlanır. Böylece döndürülen sonuç, 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 İleti Ata politikası, yanıt yükünü atamak için uzantının yanıtını saklayan 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 ExtensionFeature politikası, lizzie@example.com dokümanını users koleksiyonundan silmektedir.

<?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, ExtensionDescription politikası bir cities koleksiyonunu sorguluyor. 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ç, 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 İleti Ata politikası, yanıt yükünü atamak için uzantının yanıtını saklayan 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 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 Zorunlu
colName Dokümanın 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

Bir filtre oluşturan koşulları belirterek bir koleksiyonu sorgular.

Bu işlemin queryArray parametresi, bir dizi dizisini (veya filtreleme koşulları olmadan boş bir dizi) belirtir. Her iç dizi, bir filtrenin koşulunu belirtir. Birden çok iç dizi, 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 soldaki bir öğe.
  • Operatörü belirten orta öğe.
  • Koleksiyon alanı değerini belirten 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>

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

Eyaletin "CA" olduğu tüm şehirleri seçin ve nüfus < 1000.000

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

İ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şul belirtir.

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

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

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

Eyaletin "CA" olduğu tüm şehirleri seçin ve nüfus < 1000.000

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ı atlamak için boş bir dizi belirtin (sonuçlara filtre uygulamayın). 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 zaten koleksiyonda mevcutsa 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 Zorunlu
colName Dokümanın oluşturulacağı koleksiyonun adı. Dize Yok. Evet.
docName data dosyasının kopyalanacağı belgenin adı. Dize Yok. Evet.
veri docName hedefine kopyalanacak veriler. Bu geçerli bir JSON nesnesi olmalıdır. Diziler desteklenmez. Nesne Yok. Sıra

Yanıt

Yok.

Yapılandırma Referansı

Bu uzantıyı API proxy'lerinde kullanmak üzere yapılandırıp 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'ya 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 Zorunlu
firestoreDB Bu uzantının istekte bulunurken kullanması gereken Cloud Firestore veritabanı URL'si. Bu URL genellikle https://DATABASE_NAME.firebaseio.com biçimini alır. Yok. Evet.
giriş bilgileri Apigee Edge konsoluna girildiğinde Firebase talimatlarıyla oluşturduğunuz anahtar dosyasının içeriği bu şekildedir. Management API aracılığıyla gönderildiğinde, anahtar dosyasından oluşturulmuş base64 kodlu bir değerdir. Yok. Evet.