Вы просматриваете документацию Apigee Edge .
Перейти к документации Apigee X. info
Версия: 2.0.1
Создание, чтение или удаление данных в базе данных Cloud Firestore.
Этот контент предоставляет справочную информацию по настройке и использованию этого расширения. Перед использованием этого расширения из API-прокси необходимо:
Создайте проект Firebase в консоли Firebase , где хранятся ваши данные.
Используйте содержимое полученного файла 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
этого действия указывает массив массивов (или пустой массив для отсутствия условий фильтрации). Каждый внутренний массив указывает условие фильтра. Несколько внутренних массивов представляют несколько условий, объединенных оператором AND.
Каждый элемент во внутреннем массиве условий представляет часть условия. Массив условий всегда имеет следующие три элемента:
- Левый элемент, определяющий поле коллекции.
- Средний элемент, определяющий оператора.
- Правый элемент, определяющий значение поля коллекции.
В следующем примере указаны два массива условий для фильтрации на основе полей state
и population
коллекции:
<Input><![CDATA[{
"colName":"cities",
"queryArray":[
["state", "==", "CA"],
["population","<",1000000]
]
}]]></Input>
Во время выполнения это действие интерпретируется как запрос, подобный следующему:
Выберите все города, где штат = «CA» и население < 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>
Во время выполнения это действие интерпретируется как запрос, подобный следующему:
Выберите все города, где штат = «CA» и население < 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, сгенерированное из файла ключа. | Никто. | Да. |