Sie sehen sich die Dokumentation zu Apigee Edge an.
Sehen Sie sich die Apigee X-Dokumentation an. info
Version: 2.0.0
Daten in einer Cloud Firestore-Datenbank erstellen, lesen oder löschen
Dieser Artikel enthält eine Referenz zum Konfigurieren und Verwenden dieser Erweiterung. Bevor Sie diese Erweiterung über einen API-Proxy verwenden können, müssen Sie Folgendes tun:
Erstellen Sie in der Firebase Console ein Firebase-Projekt, in dem Ihre Daten gespeichert werden.
Verwenden Sie den Inhalt der resultierenden JSON-Schlüsseldatei, wenn Sie die Erweiterung mithilfe der Konfigurationsreferenz hinzufügen und konfigurieren.
Cloud Firestore
In Cloud Firestore werden Daten in Dokumenten gespeichert, die 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 allgemeine Informationen zu Cloud Firestore finden Sie in der Cloud Firestore-Dokumentation unter Erste Schritte mit Firestore.
Beispiele
In den folgenden Beispielen wird gezeigt, wie Sie die Unterstützung für Cloud Firestore-Erweiterungsaktionen mithilfe der ExtensionCallout-Richtlinie konfigurieren.
Daten hinzufügen
Mit der folgenden ExtensionCallout-Richtlinie wird einer users
-Sammlung ein Dokument namens freewill@example.com
hinzugefügt. Die Property data
gibt die Felder und Werte des neuen Dokuments an.
<?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 freewill@example.com
-Dokuments aus der users
-Sammlung ab. Hier ist das parsed
-Attribut des <Output>
-Elements auf false
gesetzt, sodass das zurückgegebene Ergebnis JSON als String ist und nicht JSON, das in ein Objekt geparst wurde. Weitere Informationen finden Sie in der Referenz zum Element <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 AssignMessage-Richtlinie wird der Wert der Variablen, in der die Antwort der Erweiterung gespeichert ist, verwendet, 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 das Dokument lizzie@example.com
durch die Richtlinie für Zusatzinformationen 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 wird mit der ExtensionCallout-Richtlinie eine cities
-Sammlung abgefragt. Die Abfrageergebnisse werden nach den Feldern state
und population
gefiltert. Hier ist das parsed
-Attribut des <Output>
-Elements auf false
gesetzt, sodass das zurückgegebene Ergebnis JSON als String ist und nicht JSON, das in ein Objekt geparst wurde. Weitere Informationen finden Sie in der Referenz zum Element <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 AssignMessage-Richtlinie wird der Wert der Variablen, in der die Antwort der Erweiterung gespeichert ist, verwendet, 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 Dokuments, das abgerufen werden soll. | String | Keine. | Ja. |
Antwort
Objekt mit dem Inhalt des Dokuments im JSON-Format.
Abfrage
Eine Sammlung wird anhand der angegebenen Bedingungen abgefragt, die einen Filter bilden.
Der Parameter queryArray
dieser Aktion gibt ein Array von Arrays an (oder ein leeres Array, wenn keine Filterbedingungen vorhanden sind). Jedes innere Array gibt eine Bedingung eines Filters an. Mehrere innere Arrays stehen für mehrere Bedingungen, die durch einen AND-Operator verknüpft sind.
Jedes Element in einem inneren Bedingungsarray stellt einen Teil der Bedingung dar. Ein Bedingungsarray besteht immer aus den folgenden drei Elementen:
- 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 anhand der Felder 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, bei denen „Bundesland“ = „CA“ und „Einwohnerzahl“ < 1.000.000 ist.
Eine Abfrage mit mehreren Bedingungen muss in Cloud Firestore von einem 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 werden mit dem Parameter queryArray
zwei Bedingungen angegeben, nach denen die vom Parameter colName
angegebene Sammlung cities
gefiltert werden soll.
Eine Abfrage mit mehreren Bedingungen muss in Cloud Firestore von einem 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, bei denen „Bundesland“ = „CA“ und „Einwohnerzahl“ < 1.000.000 ist.
Parameter | Beschreibung | Typ | Standard | Erforderlich |
---|---|---|---|---|
colName | Name der abzufragenden Sammlung. | String | Keine. | Ja. |
queryArray | Ein Array von Bedingungsarrays, die zusammen die Teile eines Filters angeben. Geben Sie ein leeres Array an, um Bedingungen (nicht Filterergebnisse) zu ignorieren. | 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. Dies muss ein gültiges JSON-Objekt sein. Arrays werden nicht unterstützt. |
Object | Keine. | Nein. |
Antwort
Keine.
Konfigurationsreferenz
Beachten Sie Folgendes, wenn Sie diese Erweiterung für die Verwendung in API-Proxys konfigurieren und bereitstellen. Eine Anleitung zum Konfigurieren einer Erweiterung mit der Apigee Console finden Sie unter Erweiterung hinzufügen und konfigurieren.
Gängige 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 |
Properties für dieses Erweiterungspaket
Attribut | Beschreibung | Standard | Erforderlich |
---|---|---|---|
firestoreDB | URL der Cloud Firestore-Datenbank, die diese Erweiterung für Anfragen verwenden soll. Diese URL hat normalerweise das Format https://DATABASE_NAME.firebaseio.com . |
Keine. | Ja. |
Anmeldedaten | Wenn Sie diesen Wert in die Apigee Edge Console eingeben, entspricht er dem Inhalt der Schlüsseldatei, die Sie mithilfe der Firebase-Anleitung generiert haben. Wenn er über die Verwaltungs-API gesendet wird, ist er ein Base64-codierter Wert, der aus der Schlüsseldatei generiert wurde. | Keine. | Ja. |