Extensão do Google Cloud Firestore

Você está lendo 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 fornece uma referência para configurar e usar essa extensão. Antes de usar essa extensão em um proxy de API, você precisa:

  1. Criar um projeto do Firebase no Console do Firebase em que os dados estão armazenados.

  2. Gerar uma chave para a conta de serviço.

  3. Usar 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 em geral, consulte Introdução ao Firestore na documentação do Cloud Firestore.

Amostras

Os exemplos a seguir ilustram como configurar o suporte para 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> está 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 de atribuição de mensagens 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> está 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 de atribuição de mensagens 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 da qual 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 especificando condições que formam um filtro.

O parâmetro queryArray dessa ação especifica uma matriz de matrizes (ou uma matriz vazia para nenhuma condição de 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 três elementos a seguir:

  • Um elemento à esquerda que especifica o campo da coleção.
  • Um elemento do meio que especifica o operador.
  • Um elemento à direita que especifica o valor do campo da 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 a seguinte:

Selecionar todas as cidades em que o estado = "CA" e a população < 1000000

Uma consulta que inclui várias condições precisa ser compatível com um índice composto no Cloud Firestore. 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 em que filtrar a coleção cities especificada pelo parâmetro colName.

Uma consulta que inclui várias condições precisa ser compatível com um índice composto no Cloud Firestore. 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 a seguinte:

Selecionar todas as cidades em que o estado = "CA" e a população < 1000000

Parâmetro Descrição Tipo Padrão Obrigatório
colName Nome da coleção 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 filtrar resultados). 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 ao qual data será copiado. String Nenhum. Sim.
data Dados a serem copiados para docName. Precisa ser um objeto JSON válido. As matrizes não são compatíveis. Objeto Nenhum. Não.

Resposta

Nenhum.

Referência de configuração

Use o seguinte ao configurar e implantar essa extensão para uso em proxies de API. Para conferir as etapas de configuração de uma extensão usando o console do 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 assume 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 usando a API Management, é um valor codificado em base64 gerado no arquivo de chave. Nenhum. Sim.