Google Cloud Firestore Uzantısı

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

Sürüm: 2.0.2

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

Bu içerik, uzantının yapılandırılması ve kullanılmasıyla ilgili referans bilgiler sağlar. Bu uzantıyı bir API proxy'sinden kullanmadan önce şunları yapmanız gerekir:

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

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

  3. Yapılandırma referansını kullanarak uzantıyı eklerken ve yapılandırırken sonuçtaki 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 örtülü olarak oluşturur. Koleksiyon veya doküman oluşturmanız gerekmez.

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

Örnekler

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

Veri ekle

Aşağıdaki ExtensionCallout politikası, freewill@example.com adlı dokümanı users koleksiyonuna ekler. data özelliği, yeni belgenin 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, döndürülen sonucun bir nesneye ayrıştırılmış JSON yerine dize olarak JSON olması için <Output> öğesinin parsed özelliği false olarak ayarlanır. 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 Assign Message 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 örnekte, ExtensionCallout politikası, users koleksiyonundan 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 sorguluyor. Sorgu sonuçları state ve population alanlarına göre filtrelenir. Burada, döndürülen sonucun bir nesneye ayrıştırılmış JSON yerine dize olarak JSON olması için <Output> öğesinin parsed özelliği false olarak ayarlanır. 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 Assign Message 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 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 belgenin 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 Belgenin alınacağı koleksiyonun adı. Dize Yok. Evet.
docName Alınacak dokümanın adı. Dize Yok. Evet.

Yanıt

Belgenin içeriğini JSON biçiminde içeren nesne.

sorgu

Bir filtre oluşturan koşulları belirterek bir koleksiyona sorgu gönderir.

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

İç koşul dizisindeki her öğe, koşulun bir bölümünü temsil eder. Bir koşul dizisinde her zaman aşağıdaki üç öğe bulunur:

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

Aşağıdaki örnekte, koleksiyonun state ve population alanlarına göre filtreleme yapmak için 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:

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

Birden fazla koşul içeren bir sorgu, Cloud Firestore'da 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 parametresiyle belirtilen cities koleksiyonunun filtreleneceği iki koşulu belirtir.

Birden fazla koşul içeren bir sorgu, Cloud Firestore'da 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>

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

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

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

Yanıt

Belgenin içeriğini JSON biçiminde içeren nesne.

setDocument

Bir dokümanı Cloud Firestore koleksiyonuna kopyalar. Doküman koleksiyonda zaten varsa ü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 içine 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 kullanılacak şekilde 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 başlıklı makaleyi inceleyin.

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

Mülk Açıklama Varsayılan Zorunlu
firestoreDB Bu uzantının istekte bulunurken 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, bu, Firebase talimatlarıyla oluşturduğunuz anahtar dosyasının içeriğidir. Yönetim API'si kullanılarak gönderildiğinde, anahtar dosyasından oluşturulan base64 kodlu bir değerdir. Yok. Evet.