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

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

Версия: 1.2.0

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

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

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

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

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

Об облачном магазине 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>
Параметр Описание Тип По умолчанию Необходимый
имя_столбца Имя коллекции, содержащей документ, который нужно удалить. Нить Никто. Да.
имя_документа Имя документа, который нужно удалить. Нить Никто. Да.

Ответ

Никто.

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

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

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

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

Ответ

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

запрос

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

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

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

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

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

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

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

Выберите все города, где штат = «CA» и население < 1 000 000.

Запрос, включающий несколько условий, должен поддерживаться в 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>

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

Выберите все города, где штат = «CA» и население < 1 000 000.

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

Ответ

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

УстановитьДокумент

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

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

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