Google Cloud Firestore-Erweiterung

Sie lesen gerade die Dokumentation zu Apigee Edge.
Zur Dokumentation zu Apigee X
info

Version: 2.0.1

Daten in einer Cloud Firestore-Datenbank erstellen, lesen oder löschen.

Dieser Inhalt enthält eine Referenz zum Konfigurieren und Verwenden dieser Erweiterung. Bevor Sie diese Erweiterung über einen API-Proxy verwenden, müssen Sie Folgendes tun:

  1. Erstellen Sie ein Firebase-Projekt in der Firebase Console, in dem Ihre Daten gespeichert werden.

  2. Erstellen Sie einen Schlüssel für das Dienstkonto.

  3. Verwenden Sie den Inhalt der resultierenden JSON-Schlüsseldatei, wenn Sie die Erweiterung mit der Konfigurationsreferenz hinzufügen und konfigurieren.

Cloud Firestore

In Cloud Firestore werden Daten in Dokumenten gespeichert, die wiederum in Sammlungen gespeichert sind. Cloud Firestore erstellt Sammlungen und Dokumente implizit, wenn Sie dem Dokument zum ersten Mal Daten hinzufügen. Sie müssen Sammlungen oder Dokumente also nicht explizit anlegen.

Weitere Informationen zu Cloud Firestore finden Sie in der Cloud Firestore-Dokumentation unter Erste Schritte mit Firestore.

Beispiele

Die folgenden Beispiele veranschaulichen, wie Sie die Unterstützung für Cloud Firestore-Erweiterungsaktionen mit der ExtensionCallout-Richtlinie konfigurieren.

Daten hinzufügen

Mit der folgenden ExtensionCallout-Richtlinie wird ein Dokument namens freewill@example.com einer Sammlung namens users hinzugefügt. Mit dem Attribut data werden die Felder und Werte des neuen Dokuments angegeben.

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

Daten abrufen

In diesem Beispiel ruft die ExtensionCallout-Richtlinie den Wert des Dokuments freewill@example.com aus der Sammlung users ab. Hier ist das Attribut parsed des Elements <Output> auf false gesetzt, damit das zurückgegebene Ergebnis JSON als String und nicht als in ein Objekt geparstes JSON ist. Weitere Informationen finden Sie in der Elementreferenz zu <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>

In der folgenden Assign Message-Richtlinie wird der Wert der Variablen verwendet, in der die Antwort der Erweiterung gespeichert ist, um die Antwortnutzlast zuzuweisen.

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

Daten löschen

In diesem Beispiel wird mit der ExtensionCallout-Richtlinie das Dokument lizzie@example.com aus der Sammlung users gelöscht.

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

Daten abfragen

In diesem Beispiel fragt die ExtensionCallout-Richtlinie eine cities-Sammlung ab. Die Abfrageergebnisse werden nach den Feldern state und population gefiltert. Hier ist das Attribut parsed des Elements <Output> auf false gesetzt, damit das zurückgegebene Ergebnis JSON als String und nicht als in ein Objekt geparstes JSON ist. Weitere Informationen finden Sie in der Elementreferenz zu <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>

In der folgenden Assign Message-Richtlinie wird der Wert der Variablen verwendet, in der die Antwort der Erweiterung gespeichert ist, um die Antwortnutzlast zuzuweisen.

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

Aktionen

deleteDocument

Löscht ein einzelnes Dokument aus einer Sammlung.

Anfrageparameter

<Input><![CDATA[{
  "colName" : "firestore-collection-name",
  "docName" : "firestore-document-name"
}]]></Input>
Parameter Beschreibung Typ Standard Erforderlich
colName Name der Sammlung, die das zu löschende Dokument enthält. String Keine. Ja.
docName Name des zu löschenden Dokuments. String Keine. Ja.

Antwort

Keine.

getDocument

Ruft den Inhalt eines einzelnen Dokuments ab.

Anfrageparameter

<Input><![CDATA[{
  "colName" : "firestore-collection-name",
  "docName" : "firestore-document-name"
}]]></Input>
Parameter Beschreibung Typ Standard Erforderlich
colName Name der Sammlung, aus der das Dokument abgerufen werden soll. String Keine. Ja.
docName Name des abzurufenden Dokuments. String Keine. Ja.

Antwort

Objekt mit dem Inhalt des Dokuments im JSON-Format.

Abfrage

Fragt eine Sammlung ab, indem Bedingungen angegeben werden, die einen Filter bilden.

Mit dem Parameter queryArray dieser Aktion wird ein Array von Arrays angegeben (oder ein leeres Array für keine Filterbedingungen). Jedes innere Array gibt eine Bedingung eines Filters an. Mehrere innere Arrays stellen mehrere Bedingungen dar, die mit einem AND-Operator verknüpft sind.

Jedes Element in einem Array mit inneren Bedingungen stellt einen Teil der Bedingung dar. Ein Bedingungsarray hat immer die folgenden drei Elemente:

  • Ein linkes Element, das das Sammlungsfeld angibt.
  • Ein mittleres Element, das den Operator angibt.
  • Ein rechtes Element, das den Wert des Sammlungsfelds angibt.

Im folgenden Beispiel werden zwei Bedingungsarrays angegeben, um nach den Feldern state und population der Sammlung zu filtern:

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

Zur Laufzeit wird diese Aktion als Abfrage wie die folgende interpretiert:

Wählen Sie alle Städte aus, in denen „state“ = „CA“ und „population“ < 1.000.000 ist.

Eine Abfrage mit mehreren Bedingungen muss in Cloud Firestore durch einen zusammengesetzten Index unterstützt werden. Weitere Informationen finden Sie unter Indextypen in Cloud Firestore.

Anfrageparameter

Syntax

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

Beispiel

In diesem Beispiel gibt der Parameter queryArray zwei Bedingungen an, nach denen die vom Parameter colName angegebene cities-Sammlung gefiltert werden soll.

Eine Abfrage mit mehreren Bedingungen muss in Cloud Firestore durch einen zusammengesetzten Index unterstützt werden. Weitere Informationen finden Sie unter Indextypen in Cloud Firestore.

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

Zur Laufzeit wird diese Aktion als Abfrage wie die folgende interpretiert:

Wählen Sie alle Städte aus, in denen „state“ = „CA“ und „population“ < 1.000.000 ist.

Parameter Beschreibung Typ Standard Erforderlich
colName Name der abzufragenden Sammlung. String Keine. Ja.
queryArray Ein Array von Bedingungs-Arrays, die zusammen die Teile eines Filters angeben. Geben Sie ein leeres Array an, um Bedingungen wegzulassen (Ergebnisse werden nicht gefiltert). Array Keine. Ja.

Antwort

Objekt mit dem Inhalt des Dokuments im JSON-Format.

setDocument

Kopiert ein Dokument in eine Cloud Firestore-Sammlung. Wenn das Dokument bereits in der Sammlung vorhanden ist, wird es überschrieben.

Anfrageparameter

<Input><![CDATA[{
  "colName" : "firestore-collection-name",
  "docName" : "firestore-document-name",
  "data" : "data-to-copy"
}]]></Input>
Parameter Beschreibung Typ Standard Erforderlich
colName Der Name der Sammlung, in der das Dokument erstellt werden soll. String Keine. Ja.
docName Name des Dokuments, in das data kopiert werden soll. String Keine. Ja.
Daten Daten, die in docName kopiert werden sollen. Dabei muss es sich um ein gültiges JSON-Objekt handeln. Arrays werden nicht unterstützt. Objekt Keine. Nein.

Antwort

Keine.

Konfigurationsreferenz

Verwenden Sie die folgenden Informationen, wenn Sie diese Erweiterung für die Verwendung in API-Proxys konfigurieren und bereitstellen. Eine Anleitung zum Konfigurieren einer Erweiterung mit der Apigee-Konsole finden Sie unter Erweiterung hinzufügen und konfigurieren.

Allgemeine Erweiterungseigenschaften

Für jede Erweiterung sind die folgenden Eigenschaften vorhanden.

Attribut Beschreibung Standard Erforderlich
name Der Name, den Sie dieser Konfiguration der Erweiterung zuweisen. Ja
packageName Name des Erweiterungspakets, wie von Apigee Edge angegeben. Ja
version Versionsnummer für das Erweiterungspaket, von dem Sie eine Erweiterung konfigurieren. Ja
configuration Konfigurationswert speziell für die Erweiterung, die Sie hinzufügen. Weitere Informationen finden Sie unter Eigenschaften für dieses Erweiterungspaket. Ja

Eigenschaften für dieses Erweiterungspaket

Attribut Beschreibung Standard Erforderlich
firestoreDB URL der Cloud Firestore-Datenbank, die von dieser Erweiterung für Anfragen verwendet werden soll. Diese URL hat normalerweise das Format https://DATABASE_NAME.firebaseio.com. Keine. Ja.
Anmeldedaten Wenn Sie diesen Wert in der Apigee Edge Console eingeben, ist er der Inhalt der Schlüsseldatei, die Sie gemäß der Firebase-Anleitung generiert haben. Wenn er über die Management API gesendet wird, ist er ein Base64-codierter Wert, der aus der Schlüsseldatei generiert wird. Keine. Ja.