Расширение Google Cloud Firestore

Вы просматриваете документацию Apigee Edge .
Перейдите в документацию Apigee
X.info

Версия: 2.0.2

Создавайте, читайте или удаляйте данные в базе данных Cloud Firestore.

Данный материал содержит справочную информацию по настройке и использованию этого расширения. Перед использованием этого расширения через API-прокси необходимо:

  1. Создайте проект Firebase в консоли Firebase , где будут храниться ваши данные.

  2. Сгенерируйте ключ для учетной записи службы .

  3. При добавлении и настройке расширения с помощью справочника по конфигурации используйте содержимое полученного JSON-файла с ключами.

О Cloud Firestore

Cloud Firestore хранит данные в документах, которые, в свою очередь, хранятся в коллекциях. Cloud Firestore создает коллекции и документы автоматически при первом добавлении данных в документ. Вам не нужно создавать коллекции или документы явным образом.

Для получения более подробной информации о Cloud Firestore в целом см. раздел «Начало работы с Firestore» в документации Cloud Firestore.

Образцы

Следующие примеры иллюстрируют, как настроить поддержку действий расширений Cloud Firestore с помощью политики ExtensionCallout .

Добавить данные

Следующая политика ExtensionCallout добавляет документ с именем freewill@example.com в коллекцию users . Свойство data определяет поля и значения нового документа.

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

Получить данные

В этом примере политика ExtensionCallout извлекает значение документа freewill@example.com из коллекции users . Здесь атрибут parsed элемента <Output> установлен в значение false , чтобы возвращаемый результат представлял собой строку JSON, а не JSON, преобразованный в объект. Дополнительную информацию см. в справочнике по элементу <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>

Следующая политика назначения сообщений использует значение переменной, хранящей ответ расширения, для назначения полезной нагрузки ответа.

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

Удалить данные

В этом примере политика ExtensionCallout удаляет документ lizzie@example.com из коллекции 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>

Данные запроса

В этом примере политика ExtensionCallout запрашивает коллекцию cities . Результаты запроса фильтруются по полям state и population . Здесь атрибут parsed элемента <Output> установлен в false , чтобы возвращаемый результат представлял собой строку JSON, а не JSON, преобразованный в объект. Для получения дополнительной информации см. справочник по элементу <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>

Следующая политика назначения сообщений использует значение переменной, хранящей ответ расширения, для назначения полезной нагрузки ответа.

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

Действия

удалитьДокумент

Удаляет отдельный документ из коллекции.

Параметры запроса

<Input><![CDATA[{
  "colName" : "firestore-collection-name",
  "docName" : "firestore-document-name"
}]]></Input>
Параметр Описание Тип По умолчанию Необходимый
colName Название коллекции, содержащей документ для удаления. Нить Никто. Да.
docName Название документа для удаления. Нить Никто. Да.

Ответ

Никто.

получить документ

Извлекает содержимое одного документа.

Параметры запроса

<Input><![CDATA[{
  "colName" : "firestore-collection-name",
  "docName" : "firestore-document-name"
}]]></Input>
Параметр Описание Тип По умолчанию Необходимый
colName Название коллекции, из которой следует получить документ. Нить Никто. Да.
docName Название документа, который необходимо получить. Нить Никто. Да.

Ответ

Объект, содержащий содержимое документа в формате JSON.

запрос

Выполняет запрос к коллекции, задавая условия, формирующие фильтр.

Параметр queryArray этого действия задает массив массивов (или пустой массив, если условия фильтрации отсутствуют). Каждый внутренний массив задает условие фильтра. Несколько внутренних массивов представляют собой несколько условий, объединенных оператором И.

Каждый элемент во внутреннем массиве условий представляет собой часть условия. Массив условий всегда содержит следующие три элемента:

  • Левый элемент, указывающий на поле коллекции.
  • Средний элемент, указывающий на оператор.
  • Правый элемент, указывающий значение поля коллекции.

В следующем примере указаны два массива условий для фильтрации на основе полей state и population коллекции:

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

Во время выполнения программы это действие интерпретируется как запрос следующего вида:

Выберите все города, где state = 'CA' и population < 1000000

Запрос, включающий несколько условий, должен поддерживаться в Cloud Firestore составным индексом. Для получения дополнительной информации см. раздел «Типы индексов в Cloud Firestore» .

Параметры запроса

Синтаксис

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

Пример

В этом примере параметр queryArray задает два условия, по которым следует фильтровать коллекцию cities , указанную параметром colName .

Запрос, включающий несколько условий, должен поддерживаться в Cloud Firestore составным индексом. Для получения дополнительной информации см. раздел «Типы индексов в Cloud Firestore» .

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

Во время выполнения программы это действие интерпретируется как запрос следующего вида:

Выберите все города, где state = 'CA' и population < 1000000

Параметр Описание Тип По умолчанию Необходимый
colName Название коллекции, по которой необходимо выполнить запрос. Нить Никто. Да.
queryArray Массив массивов условий, которые в совокупности определяют части фильтра. Укажите пустой массив, чтобы исключить условия (а не результаты фильтрации). Множество Никто. Да.

Ответ

Объект, содержащий содержимое документа в формате JSON.

setDocument

Копирует документ в коллекцию Cloud Firestore. Если документ уже существует в коллекции, он будет перезаписан.

Параметры запроса

<Input><![CDATA[{
  "colName" : "firestore-collection-name",
  "docName" : "firestore-document-name",
  "data" : "data-to-copy"
}]]></Input>
Параметр Описание Тип По умолчанию Необходимый
colName Название коллекции, в которой будет создан документ. Нить Никто. Да.
docName Название документа, в который следует скопировать data . Нить Никто. Да.
данные Данные для копирования в docName . Это должен быть допустимый JSON-объект. Массивы не поддерживаются. Объект Никто. Нет.

Ответ

Никто.

Справочник по конфигурации

При настройке и развертывании этого расширения для использования в API-прокси используйте следующие параметры. Инструкции по настройке расширения с помощью консоли Apigee см. в разделе «Добавление и настройка расширения» .

Общие свойства расширения

Следующие свойства присутствуют для каждого расширения.

Свойство Описание По умолчанию Необходимый
name Имя, которое вы даете этой конфигурации расширения. Никто Да
packageName Имя пакета расширения, предоставленное Apigee Edge. Никто Да
version Номер версии пакета расширения, из которого вы настраиваете расширение. Никто Да
configuration Значение конфигурации, относящееся к добавляемому расширению. См. Свойства этого пакета расширения. Никто Да

Свойства для этого пакета расширений

Свойство Описание По умолчанию Необходимый
firestoreDB URL-адрес базы данных Cloud Firestore, который это расширение должно использовать при отправке запросов. Обычно этот URL-адрес имеет вид https://DATABASE_NAME.firebaseio.com . Никто. Да.
реквизиты для входа При вводе в консоль Apigee Edge это содержимое файла ключа, сгенерированного вами в соответствии с инструкциями Firebase . При отправке через API управления это значение в кодировке base64, сгенерированное из файла ключа. Никто. Да.