Extension Google Cloud Firestore

Vous consultez la documentation d'Apigee Edge.
Consultez la documentation Apigee X.
en savoir plus

Version: 1.4.1

Créer, lire ou supprimer des données dans une base de données Cloud Firestore

Ce contenu fournit une documentation de référence sur la configuration et l'utilisation de cette extension. Avant d'utiliser cette extension à partir d'un proxy d'API, vous devez:

  1. Créez un projet Firebase dans la console Firebase, où vos données sont stockées.

  2. Générez une clé pour le compte de service.

  3. Utilisez le contenu du fichier JSON de clé obtenu lorsque vous ajoutez et configurez l'extension à l'aide des documents de référence de configuration.

À propos de Cloud Firestore

Cloud Firestore stocke les données dans des documents, qui sont stockés dans des collections. Cloud Firestore crée des collections et des documents implicitement la première fois que vous ajoutez des données au document. Vous n'avez pas besoin de créer explicitement des collections ou des documents.

Pour en savoir plus sur Cloud Firestore de manière générale, consultez la section Premiers pas avec Firestore dans la documentation Cloud Firestore.

Samples

Les exemples suivants montrent comment configurer la compatibilité avec les actions de l'extension Cloud Firestore à l'aide de la règle ExtensionCallout.

Ajouter des données

La règle ExtensionCallout suivante ajoute un document appelé freewill@example.com à une collection users. La propriété data spécifie les champs et les valeurs du nouveau document.

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

Obtenir les données

Dans cet exemple, la règle ExtensionCallout récupère la valeur du document freewill@example.com à partir de la collection users. Ici, l'attribut parsed de l'élément <Output> est défini sur false afin que le résultat renvoyé soit JSON sous forme de chaîne, et non JSON analysé dans un objet. Pour en savoir plus, consultez la documentation de référence sur l'élément <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>

La règle Assign Message (Attribuer un message) suivante utilise la valeur de la variable stockant la réponse de l'extension pour attribuer la charge utile de réponse.

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

Supprimer vos données

Dans cet exemple, la règle ExtensionCallout supprime le document lizzie@example.com de la collection 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>

Interroger les données

Dans cet exemple, la règle ExtensionCallout interroge une collection cities. Les résultats de la requête sont filtrés selon les champs state et population. Ici, l'attribut parsed de l'élément <Output> est défini sur false afin que le résultat renvoyé soit JSON sous forme de chaîne, et non JSON analysé dans un objet. Pour en savoir plus, consultez la documentation de référence sur l'élément <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>

La règle Assign Message (Attribuer un message) suivante utilise la valeur de la variable stockant la réponse de l'extension pour attribuer la charge utile de réponse.

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

Actions

deleteDocument

Supprime un seul document d'une collection.

Paramètres de requête

<Input><![CDATA[{
  "colName" : "firestore-collection-name",
  "docName" : "firestore-document-name"
}]]></Input>
Paramètres Description Type Par défaut Obligatoire
colName Nom de la collection contenant le document à supprimer. Chaîne Aucune Oui.
docName Nom du document à supprimer. Chaîne Aucune Oui.

Réponse

Aucune

getDocument

Récupère le contenu d'un document unique.

Paramètres de requête

<Input><![CDATA[{
  "colName" : "firestore-collection-name",
  "docName" : "firestore-document-name"
}]]></Input>
Paramètres Description Type Par défaut Obligatoire
colName Nom de la collection à partir de laquelle récupérer le document. Chaîne Aucune Oui.
docName Nom du document à récupérer. Chaîne Aucune Oui.

Réponse

Objet contenant le contenu du document au format JSON.

requête

Interroge une collection en spécifiant les conditions qui forment un filtre.

Le paramètre queryArray de cette action spécifie un tableau de tableaux (ou un tableau vide en l'absence de conditions de filtrage). Chaque tableau interne spécifie une condition de filtre. Les tableaux internes multiples représentent plusieurs conditions jointes par un opérateur AND.

Chaque élément d'un tableau de conditions internes représente une partie de la condition. Un tableau de conditions contient toujours les trois éléments suivants:

  • Élément de gauche spécifiant le champ de collection.
  • Élément du milieu spécifiant l'opérateur.
  • Élément de droite spécifiant la valeur du champ de collection.

L'exemple suivant spécifie deux tableaux de conditions à filtrer en fonction des champs state et population de la collection:

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

Au moment de l'exécution, cette action est interprétée comme une requête telle que la suivante:

Sélectionnez toutes les villes où l'État = "CA" et la population < 1000 000

Une requête qui inclut plusieurs conditions doit être acceptée dans Cloud Firestore par un index composite. Pour en savoir plus, consultez la section Types d'index dans Cloud Firestore.

Paramètres de requête

Syntaxe

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

Exemple

Dans cet exemple, le paramètre queryArray spécifie deux conditions selon lesquelles filtrer la collection cities spécifiée par le paramètre colName.

Une requête qui inclut plusieurs conditions doit être acceptée dans Cloud Firestore par un index composite. Pour en savoir plus, consultez la section Types d'index dans Cloud Firestore.

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

Au moment de l'exécution, cette action est interprétée comme une requête telle que la suivante:

Sélectionnez toutes les villes où l'État = "CA" et la population < 1000 000

Paramètres Description Type Par défaut Obligatoire
colName Nom de la collection à interroger. Chaîne Aucune Oui.
queryArray Tableau de tableaux de conditions qui, ensemble, spécifient les parties d'un filtre. Spécifiez un tableau vide pour omettre les conditions (et non filtrer les résultats). Array Aucune Oui.

Réponse

Objet contenant le contenu du document au format JSON.

setDocument

Copie un document dans une collection Cloud Firestore. Si le document existe déjà dans la collection, il est remplacé.

Paramètres de requête

<Input><![CDATA[{
  "colName" : "firestore-collection-name",
  "docName" : "firestore-document-name",
  "data" : "data-to-copy"
}]]></Input>
Paramètres Description Type Par défaut Obligatoire
colName Nom de la collection dans laquelle créer le document. Chaîne Aucune Oui.
docName Nom du document dans lequel data doit être copié. Chaîne Aucune Oui.
données Données à copier dans docName. Il doit s'agir d'un objet JSON valide. Les tableaux ne sont pas acceptés. Objet Aucune Non.

Réponse

Aucune

Documentation de référence sur la configuration

Utilisez le code suivant lorsque vous configurez et déployez cette extension pour l'utiliser dans des proxys d'API. Pour savoir comment configurer une extension à l'aide de la console Apigee, consultez Ajouter et configurer une extension.

Propriétés d'extension courantes

Les propriétés suivantes sont présentes pour chaque extension.

Propriété Description Par défaut Obligatoire
name Nom que vous attribuez à cette configuration de l'extension. Aucune Oui
packageName Nom du package d'extension tel qu'indiqué par Apigee Edge. Aucune Oui
version Numéro de version du package d'extension à partir duquel vous configurez une extension. Aucune Oui
configuration Valeur de configuration spécifique à l'extension que vous ajoutez. Consultez Propriétés de ce package d'extension. Aucune Oui

Propriétés de ce package d'extension

Propriété Description Par défaut Obligatoire
firestoreDB URL de la base de données Cloud Firestore que cette extension doit utiliser pour envoyer des requêtes. Cette URL se présente généralement au format https://DATABASE_NAME.firebaseio.com. Aucune Oui.
identifiants Une fois saisi dans la console Apigee Edge, il s'agit du contenu du fichier de clé que vous avez généré à l'aide des instructions Firebase. Lorsqu'elle est envoyée via l'API de gestion, il s'agit d'une valeur encodée en base64 générée à partir du fichier de clé. Aucune Oui.