Przeglądasz dokumentację Apigee Edge.
Otwórz dokumentację Apigee X. Informacje
Wersja: 1.2.0
Tworzenie, odczytywanie i usuwanie danych w bazie danych Cloud Firestore.
Ta treść zawiera informacje na temat konfigurowania tego rozszerzenia i korzystania z niego. Zanim użyjesz tego rozszerzenia z poziomu serwera proxy interfejsu API, musisz:
Utwórz projekt Firebase w konsoli Firebase, w której przechowywane są Twoje dane.
Podczas dodawania i konfigurowania rozszerzenia przy użyciu dokumentu dotyczącego konfiguracji użyj zawartości powstałego klucza pliku JSON.
Informacje o Cloud Firestore
Cloud Firestore przechowuje dane w dokumentach, które są przechowywane w kolekcjach. Gdy po raz pierwszy dodajesz dane do dokumentu, Cloud Firestore tworzy domyślnie kolekcje i dokumenty. Nie musisz tworzyć bezpośrednio kolekcji ani dokumentów.
Więcej informacji o Cloud Firestore znajdziesz w artykule Pierwsze kroki z Firestore w dokumentacji Cloud Firestore.
Sample
Poniższe przykłady pokazują, jak skonfigurować obsługę działań rozszerzenia Cloud Firestore za pomocą zasady ExtensionCallout.
Dodaj dane
Poniższe zasady ExtensionCallout dodają dokument o nazwie freewill@example.com
do kolekcji users
. Właściwość data
określa pola i wartości nowego dokumentu.
<?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>
Pobierz dane
W tym przykładzie zasada ExtensionCallout pobiera wartość dokumentu freewill@example.com
z kolekcji users
. W tym przypadku atrybut parsed
elementu <Output>
ma wartość false
, więc zwrócony wynik będzie miał postać ciągu JSON, a nie obiektu JSON. Więcej informacji znajdziesz w dokumentacji elementów <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>
Poniższa zasada Przypisz wiadomość do przypisania ładunku odpowiedzi wykorzystuje wartość zmiennej przechowującej odpowiedź rozszerzenia.
<?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>
Usuń dane
W tym przykładzie zasada ExtensionCallout usuwa dokument lizzie@example.com
z kolekcji users
.
<?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>
Zapytanie o dane
W tym przykładzie zasada ExtensionCallout wysyła zapytanie do kolekcji cities
. Wyniki zapytania są filtrowane według pól state
i population
. W tym przypadku atrybut parsed
elementu <Output>
ma wartość false
, więc zwrócony wynik będzie miał postać ciągu JSON, a nie obiektu JSON. Więcej informacji znajdziesz w dokumentacji elementów <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>
Poniższa zasada Przypisz wiadomość do przypisania ładunku odpowiedzi wykorzystuje wartość zmiennej przechowującej odpowiedź rozszerzenia.
<?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>
Działania
deleteDocument
Usuwa pojedynczy dokument z kolekcji.
Parametry żądania
<Input><![CDATA[{
"colName" : "firestore-collection-name",
"docName" : "firestore-document-name"
}]]></Input>
Parametr | Opis | Typ | Domyślne | Wymagane |
---|---|---|---|---|
colName | Nazwa kolekcji zawierającej dokument do usunięcia. | Ciąg znaków | Brak. | Tak. |
docName | Nazwa dokumentu do usunięcia. | Ciąg znaków | Brak. | Tak. |
Odpowiedź
Brak.
getDocument
Pobiera zawartość pojedynczego dokumentu.
Parametry żądania
<Input><![CDATA[{
"colName" : "firestore-collection-name",
"docName" : "firestore-document-name"
}]]></Input>
Parametr | Opis | Typ | Domyślne | Wymagane |
---|---|---|---|---|
colName | Nazwa kolekcji, z której ma zostać pobrany dokument. | Ciąg znaków | Brak. | Tak. |
docName | Nazwa dokumentu do pobrania. | Ciąg znaków | Brak. | Tak. |
Odpowiedź
Obiekt zawierający treść dokumentu w formacie JSON.
zapytanie
Wykonuje zapytania dotyczące kolekcji, określając warunki tworzące filtr.
Parametr queryArray
tego działania określa tablicę tablic (lub pustą tablica, jeśli nie ma warunków filtrowania). Każda tablica wewnętrzna określa warunek filtra. Tablice wewnętrzne reprezentują wiele warunków połączonych operatorem ORAZ.
Każdy element wewnętrznej tablicy warunków reprezentuje część warunku. Tablica warunków zawsze zawiera te 3 elementy:
- Element po lewej stronie określający pole kolekcji.
- Element środkowy, określający operator.
- Prawy element określający wartość pola kolekcji.
Poniższy przykład określa 2 tablice warunków do filtrowania na podstawie pól state
i population
kolekcji:
<Input><![CDATA[{
"colName":"cities",
"queryArray":[
["state", "==", "CA"],
["population","<",1000000]
]
}]]></Input>
W czasie działania działanie to jest interpretowane jako zapytanie na przykład w ten sposób:
Wybierz wszystkie miasta, w których stan = „CA” i liczba ludności poniżej 1 000 000
Zapytanie zawierające wiele warunków musi być obsługiwane w Cloud Firestore przez indeks złożony. Więcej informacji znajdziesz w artykule Typy indeksów w Cloud Firestore.
Parametry żądania
Składnia
<Input><![CDATA[{
"colName" : "firestore-collection-name",
"queryArray" : "queryArray": query-condition-array
}]]></Input>
Przykład
W tym przykładzie parametr queryArray
określa 2 warunki, według których ma być filtrowany zbiór cities
określony przez parametr colName
.
Zapytanie zawierające wiele warunków musi być obsługiwane w Cloud Firestore przez indeks złożony. Więcej informacji znajdziesz w artykule Typy indeksów w Cloud Firestore.
<Input><![CDATA[{
"colName":"cities",
"queryArray":[["state", "==", "CA"],["population","<",1000000]]
}]]></Input>
W czasie działania działanie to jest interpretowane jako zapytanie na przykład w ten sposób:
Wybierz wszystkie miasta, w których stan = „CA” i liczba ludności poniżej 1 000 000
Parametr | Opis | Typ | Domyślne | Wymagane |
---|---|---|---|---|
colName | Nazwa kolekcji, której dotyczy zapytanie. | Ciąg znaków | Brak. | Tak. |
queryArray | Tablica tablic warunków, które razem określają części filtra. Aby pominąć warunki (a nie filtrować wyników), podaj pustą tablicę. | Tablica | Brak. | Tak. |
Odpowiedź
Obiekt zawierający treść dokumentu w formacie JSON.
setDocument
Kopiuje dokument do kolekcji Cloud Firestore. Jeśli dokument istnieje już w kolekcji, zostanie on zastąpiony.
Parametry żądania
<Input><![CDATA[{
"colName" : "firestore-collection-name",
"docName" : "firestore-document-name",
"data" : "data-to-copy"
}]]></Input>
Parametr | Opis | Typ | Domyślne | Wymagane |
---|---|---|---|---|
colName | Nazwa kolekcji, w której ma zostać utworzony dokument. | Ciąg znaków | Brak. | Tak. |
docName | Nazwa dokumentu, do którego ma zostać skopiowana wartość data . |
Ciąg znaków | Brak. | Tak. |
dane | Dane do skopiowania do usługi docName . Musi to być prawidłowy obiekt JSON. Tablice nie są obsługiwane. |
Obiekt | Brak. | Nie. |
Odpowiedź
Brak.
Dokumentacja konfiguracji
Skorzystaj z podanych niżej instrukcji podczas konfigurowania i wdrażania tego rozszerzenia na potrzeby serwerów proxy interfejsów API. Instrukcje konfigurowania rozszerzenia w konsoli Apigee znajdziesz w artykule Dodawanie i konfigurowanie rozszerzenia.
Typowe właściwości rozszerzeń
Dla każdego rozszerzenia dostępne są poniższe właściwości.
Usługa | Opis | Domyślnie | Wymagany |
---|---|---|---|
name |
Nazwa nadana konfiguracji rozszerzenia. | Brak | Tak |
packageName |
Nazwa pakietu rozszerzeń podana przez Apigee Edge. | Brak | Tak |
version |
Numer wersji pakietu rozszerzenia, z którego konfigurujesz rozszerzenie. | Brak | Tak |
configuration |
Wartość konfiguracji specyficzna dla dodawanego rozszerzenia. Zobacz Właściwości tego pakietu rozszerzeń | Brak | Tak |
Właściwości tego pakietu rozszerzeń
Właściwość | Opis | Domyślne | Wymagane |
---|---|---|---|
firestoreDB | Adres URL bazy danych Cloud Firestore, której to rozszerzenie powinno używać podczas wysyłania żądań. Ten adres URL ma zwykle postać https://DATABASE_NAME.firebaseio.com . |
Brak. | Tak. |
dane logowania | Wpisana w konsoli Apigee Edge jest to zawartość pliku klucza wygenerowanego zgodnie z instrukcjami Firebase. Gdy jest wysyłana przez interfejs API zarządzania, jest to wartość zakodowana w formacie base64 wygenerowana z pliku klucza. | Brak. | Tak. |