Você está visualizando a documentação do Apigee Edge.
Acesse a
documentação da
Apigee X. info
Versão: 2.0.0
Crie, leia ou exclua dados em um banco de dados do Cloud Firestore.
Este conteúdo oferece uma referência para configurar e usar essa extensão. Antes de usar essa extensão em um proxy de API, você precisa:
Crie um projeto do Firebase no Console do Firebase em que seus dados são armazenados.
Use o conteúdo do arquivo JSON de chave resultante ao adicionar e configurar a extensão usando a referência de configuração.
Sobre o Cloud Firestore
O Cloud Firestore armazena dados em documentos, que são armazenados em coleções. O Cloud Firestore cria coleções e documentos de modo implícito na primeira vez que você adiciona dados ao documento. Não é necessário criar coleções ou documentos explicitamente.
Para mais informações sobre o Cloud Firestore, consulte Primeiras etapas com o Firestore na documentação do Cloud Firestore.
Amostras
Os exemplos a seguir ilustram como configurar o suporte a ações de extensão do Cloud Firestore usando a política ExtensionCallout.
Adicionar dados
A política ExtensionCallout a seguir adiciona um documento chamado freewill@example.com
a uma coleção users
. A propriedade data
especifica os campos e valores do novo documento.
<?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>
Extrair dados
Neste exemplo, a política ExtensionCallout recupera o valor do documento freewill@example.com
da coleção users
. Aqui, o atributo parsed
do elemento <Output>
é definido como false
para que o resultado retornado seja JSON como uma string, em vez de JSON analisado em um objeto. Para mais informações, consulte a referência do elemento <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>
A política Atribuir mensagem a seguir usa o valor da variável que armazena a resposta da extensão para atribuir o payload de resposta.
<?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>
Excluir dados
Neste exemplo, a política ExtensionCallout exclui o documento lizzie@example.com
da coleção 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>
Consultar dados
Neste exemplo, a política ExtensionCallout consulta uma coleção cities
. Os resultados da consulta são filtrados pelos campos state
e population
. Aqui, o atributo parsed
do elemento <Output>
é definido como false
para que o resultado retornado seja JSON como uma string, em vez de JSON analisado em um objeto. Para mais informações, consulte a referência do elemento <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>
A política Atribuir mensagem a seguir usa o valor da variável que armazena a resposta da extensão para atribuir o payload de resposta.
<?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>
Ações
deleteDocument
Exclui um único documento de uma coleção.
Parâmetros de solicitação
<Input><![CDATA[{
"colName" : "firestore-collection-name",
"docName" : "firestore-document-name"
}]]></Input>
Parâmetro | Descrição | Tipo | Padrão | Obrigatório |
---|---|---|---|---|
colName | Nome da coleção que contém o documento a ser excluído. | String | Nenhum. | Sim. |
docName | Nome do documento a ser excluído. | String | Nenhum. | Sim. |
Resposta
Nenhum.
getDocument
Recupera o conteúdo de um único documento.
Parâmetros de solicitação
<Input><![CDATA[{
"colName" : "firestore-collection-name",
"docName" : "firestore-document-name"
}]]></Input>
Parâmetro | Descrição | Tipo | Padrão | Obrigatório |
---|---|---|---|---|
colName | Nome da coleção de onde o documento será recuperado. | String | Nenhum. | Sim. |
docName | Nome do documento a ser recuperado. | String | Nenhum. | Sim. |
Resposta
Objeto que contém o conteúdo do documento no formato JSON.
consulta
Consulta uma coleção com as condições especificadas que formam um filtro.
O parâmetro queryArray
dessa ação especifica uma matriz de matrizes (ou uma matriz vazia para condições sem filtragem). Cada matriz interna especifica uma condição de um filtro. Várias matrizes internas representam várias condições unidas por um operador AND.
Cada elemento em uma matriz de condição interna representa uma parte da condição. Uma matriz de condição sempre tem os seguintes três elementos:
- Um elemento à esquerda que especifica o campo de coleta.
- Um elemento intermediário que especifica o operador.
- Um elemento à direita que especifica o valor do campo de coleção.
O exemplo a seguir especifica duas matrizes de condição para filtrar com base nos campos state
e population
da coleção:
<Input><![CDATA[{
"colName":"cities",
"queryArray":[
["state", "==", "CA"],
["population","<",1000000]
]
}]]></Input>
No momento da execução, essa ação é interpretada como uma consulta, como esta:
Selecione todas as cidades em que "state" = 'CA' e "population" < 1000000
Uma consulta que inclui várias condições precisa ter suporte no Cloud Firestore por um índice composto. Para mais informações, consulte Tipos de índices no Cloud Firestore.
Parâmetros de solicitação
Sintaxe
<Input><![CDATA[{
"colName" : "firestore-collection-name",
"queryArray" : "queryArray": query-condition-array
}]]></Input>
Exemplo
Neste exemplo, o parâmetro queryArray
especifica duas condições para filtrar a coleção cities
especificada pelo parâmetro colName
.
Uma consulta que inclui várias condições precisa ter suporte no Cloud Firestore por um índice composto. Para mais informações, consulte Tipos de índices no Cloud Firestore.
<Input><![CDATA[{
"colName":"cities",
"queryArray":[["state", "==", "CA"],["population","<",1000000]]
}]]></Input>
No momento da execução, essa ação é interpretada como uma consulta, como esta:
Selecione todas as cidades em que "state" = 'CA' e "population" < 1000000
Parâmetro | Descrição | Tipo | Padrão | Obrigatório |
---|---|---|---|---|
colName | Nome da coletânea a ser consultada. | String | Nenhum. | Sim. |
queryArray | Uma matriz de matrizes de condição que, juntas, especificam as partes de um filtro. Especifique uma matriz vazia para omitir condições (não os resultados do filtro). | Matriz | Nenhum. | Sim. |
Resposta
Objeto que contém o conteúdo do documento no formato JSON.
setDocument
Copia um documento para uma coleção do Cloud Firestore. Se o documento já existir na coleção, ele será substituído.
Parâmetros de solicitação
<Input><![CDATA[{
"colName" : "firestore-collection-name",
"docName" : "firestore-document-name",
"data" : "data-to-copy"
}]]></Input>
Parâmetro | Descrição | Tipo | Padrão | Obrigatório |
---|---|---|---|---|
colName | Nome da coleção em que o documento será criado. | String | Nenhum. | Sim. |
docName | Nome do documento para o qual data precisa ser copiado. |
String | Nenhum. | Sim. |
dados | Dados a serem copiados para docName . Ele precisa ser um objeto JSON válido. Arrays não são aceitos. |
Objeto | Nenhum. | Não. |
Resposta
Nenhum.
Referência de configuração
Use as informações a seguir ao configurar e implantar essa extensão para uso em proxies de API. Para saber como configurar uma extensão usando o console da Apigee, consulte Adicionar e configurar uma extensão.
Propriedades de extensão comuns
As propriedades a seguir estão presentes para cada extensão.
Propriedade | Descrição | Padrão | Obrigatório |
---|---|---|---|
name |
Nome que será dado a esta configuração da extensão. | Nenhum | Sim |
packageName |
Nome do pacote de extensão fornecido pelo Apigee Edge. | Nenhum | Sim |
version |
Número da versão do pacote de extensão a partir do qual você está configurando uma extensão. | Nenhum | Sim |
configuration |
Valor de configuração específico da extensão que você está adicionando. Consulte Propriedades para este pacote de extensão. | Nenhum | Sim |
Propriedades deste pacote de extensão
Propriedade | Descrição | Padrão | Obrigatório |
---|---|---|---|
firestoreDB | URL do banco de dados do Cloud Firestore que essa extensão precisa usar ao fazer solicitações. Esse URL geralmente tem o formato https://DATABASE_NAME.firebaseio.com . |
Nenhum. | Sim. |
credenciais | Quando inserido no console do Apigee Edge, esse é o conteúdo do arquivo de chave gerado com as instruções do Firebase. Quando enviado pela API de gerenciamento, é um valor codificado em base64 gerado pelo arquivo de chave. | Nenhum. | Sim. |