Extension Google Cloud Firestore

<ph type="x-smartling-placeholder"></ph> Vous consultez la documentation Apigee Edge.
Accédez à la page Documentation sur Apigee X.
En savoir plus

<ph type="x-smartling-placeholder">

Version: 1.2.0

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

Ce contenu fournit des informations de référence pour configurer et utiliser 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ù sont stockées vos données.

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

  3. Utilisez le contenu du fichier JSON de clé obtenu lors de l'ajout et de la configuration de l'extension à l'aide de la documentation de référence de configuration.

À propos de Cloud Firestore

Cloud Firestore stocke des données dans des documents, qui sont stockés dans des collections. Cloud Firestore crée implicitement des collections et des documents 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 en général, consultez la page Premiers pas avec Firestore dans la documentation Cloud Firestore.

Exemples

Les exemples suivants montrent comment configurer la prise en charge des actions de l'extension Cloud Firestore à l'aide de la règle ExtensionCall.

Ajouter des données

La règle ExtensionAccroche 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 ExtensionAccroche 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 au format JSON sous forme de chaîne, plutôt que 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 des données

Dans cet exemple, la règle ExtensionAccroche 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 ExtensionCall 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 au format JSON sous forme de chaîne, plutôt que 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

<ph type="x-smartling-placeholder">

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ètre Description Type Par défaut Obligatoire
colName Nom de la collection contenant le document à supprimer. Chaîne Aucun Oui.
docName Nom du document à supprimer. Chaîne Aucun Oui.

Réponse

Aucun

getDocument

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

Paramètres de requête

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

Réponse

Objet incluant 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 la condition d'un filtre. Les tableaux multiples internes représentent plusieurs conditions jointes par un opérateur AND.

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

  • Élément 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 est "CA" et la population < 1000000

Une requête qui comprend plusieurs conditions doit être acceptée dans Cloud Firestore par un index composite. Pour en savoir plus, consultez la page 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 page 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 est "CA" et la population < 1000000

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

Réponse

Objet incluant 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ètre Description Type Par défaut Obligatoire
colName Nom de la collection dans laquelle créer le document. Chaîne Aucun Oui.
docName Nom du document dans lequel data doit être copié. Chaîne Aucun 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 Aucun Non.

Réponse

Aucun

Documentation de référence sur la configuration

Procédez comme suit lorsque vous configurez et déployez cette extension afin de 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 courantes des extensions

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 effectuer des requêtes. Cette URL se présente généralement au format https://DATABASE_NAME.firebaseio.com. Aucun Oui.
credentials Lorsqu'il est saisi dans la console Apigee Edge, il s'agit du contenu du fichier de clé que vous avez généré avec les 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é. Aucun Oui.