Rozszerzenie Google Cloud Firestore

Przeglądasz dokumentację Apigee Edge.
Przejdź do Dokumentacja Apigee X.
informacje.

Wersja: 1.4.1

Tworzenie, odczytywanie i usuwanie danych w bazie danych Cloud Firestore.

W tym artykule znajdziesz informacje na temat konfigurowania i używania tego rozszerzenia. Przed użyciem tego rozszerzenia z serwera proxy interfejsu API musisz:

  1. Utwórz projekt Firebase w konsoli Firebase, w którym będą przechowywane Twoje dane.

  2. Wygeneruj klucz konta usługi.

  3. Użyj zawartości wynikowego pliku JSON klucza podczas dodawania i konfigurowania rozszerzenia w dokumentacji konfiguracji.

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 domyślnie tworzy kolekcje i dokumenty. Nie musisz bezpośrednio tworzyć kolekcji ani dokumentów.

Więcej informacji na temat Cloud Firestore znajdziesz w artykule Pierwsze kroki z Firestore w dokumentacji Cloud Firestore.

Przykłady

Poniższe przykłady pokazują, jak skonfigurować obsługę działań rozszerzenia Cloud Firestore za pomocą zasady ExtensionCallout.

Dodaj dane

Poniższe zasady ExtensionCallout powodują dodanie dokumentu 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, dzięki czemu zwrócony wynik ma postać ciągu znaków w formacie JSON, a nie obiektu JSON. Więcej informacji znajdziesz w dokumentacji elementu <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 Assign Message (Przypisz wiadomość) używa wartości zmiennej przechowującej odpowiedź rozszerzenia do przypisania ładunku odpowiedzi.

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

Dane zapytań

W tym przykładzie zasada ExtensionCallout wysyła zapytania do kolekcji cities. Wyniki zapytania są filtrowane według pól state i population. W tym przypadku atrybut parsed elementu <Output> ma wartość false, dzięki czemu zwrócony wynik ma postać ciągu znaków w formacie JSON, a nie obiektu JSON. Więcej informacji znajdziesz w dokumentacji elementu <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 Assign Message (Przypisz wiadomość) używa wartości zmiennej przechowującej odpowiedź rozszerzenia do przypisania ładunku odpowiedzi.

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

Tworzy zapytanie do kolekcji, określając warunki, które tworzą filtr.

Parametr queryArray działania określa tablicę tablic (lub pustą tablicę w przypadku braku warunków filtrowania). Każda tablica wewnętrzna określa warunek filtra. Wiele wewnętrznych tablic oznacza wiele warunków połączonych operatorem AND.

Każdy element w 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.
  • Środkowy element określający operator.
  • Prawy element określający wartość pola kolekcji.

Ten 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 to działanie jest interpretowane jako zapytanie w rodzaju:

Wybierz wszystkie miasta, w których stan = „PL” i populacja < 1000000

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 filtrowania kolekcji cities określonej 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 to działanie jest interpretowane jako zapytanie w rodzaju:

Wybierz wszystkie miasta, w których stan = „PL” i populacja < 1000000

Parametr Opis Typ Domyślny Wymagane
colName Nazwa kolekcji, której ma dotyczyć zapytanie. Ciąg znaków Brak. Tak.
queryArray Tablica tablic warunków, które razem określają elementy filtra. Podaj pustą tablicę, aby pominąć warunki (a nie wyniki filtrowania). Tablica Brak. Tak.

Odpowiedź

Obiekt zawierający treść dokumentu w formacie JSON.

setDocument

Kopiuje dokument do kolekcji Cloud Firestore. Jeśli dokument już istnieje w kolekcji, zostanie zastąpiony.

Parametry żądania

<Input><![CDATA[{
  "colName" : "firestore-collection-name",
  "docName" : "firestore-document-name",
  "data" : "data-to-copy"
}]]></Input>
Parametr Opis Typ Domyślny Wymagane
colName Nazwa kolekcji, w której ma zostać utworzony dokument. Ciąg znaków Brak. Tak.
docName Nazwa dokumentu, do którego chcesz skopiować 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.

Odniesienie do konfiguracji

Podczas konfigurowania i wdrażania tego rozszerzenia na potrzeby serwerów proxy interfejsu API użyj poniższych wskazówek. Instrukcje konfigurowania rozszerzenia za pomocą 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ślny Wymagane
firestoreDB Adres URL bazy danych Cloud Firestore, którego to rozszerzenie ma używać w wysyłaniu żądań. Zwykle ma on postać https://DATABASE_NAME.firebaseio.com. Brak. Tak.
dane logowania Jeśli wpiszesz ją w konsoli Apigee Edge, zobaczysz zawartość pliku klucza wygenerowanego za pomocą instrukcji Firebase. W przypadku wysyłania przez interfejs API zarządzania jest to wartość zakodowana w formacie base64 generowana na podstawie pliku klucza. Brak. Tak.