Premiers pas avec l'édition Enterprise de Firestore à l'aide des bibliothèques clientes de serveur

Ce guide de démarrage rapide explique comment configurer Cloud Firestore, ajouter des données, puis utiliser des opérations Core ou des opérations de pipeline pour interroger les données que vous venez d'ajouter dans la Firebase console à l'aide de bibliothèques clientes de serveur pour Java, Node.js et Python.

Utilisez ces bibliothèques clientes pour configurer des environnements de serveur privilégiés avec un accès complet à votre base de données.

Créer une base de données Cloud Firestore

  1. Si ce n'est pas déjà fait, créez un projet Firebase : dans la Firebase console, cliquez sur Ajouter un projet, puis suivez les instructions à l'écran pour créer un projet Firebase ou ajouter des services Firebase à un projet Google Cloud existant.

  2. Ouvrez votre projet dans la console Firebase. Dans le panneau de gauche, développez Build (Créer), puis sélectionnez Firestore database (Base de données Firestore).

  3. Cliquez sur Créer une base de données.

  4. Sélectionnez Enterprise pour le mode de base de données.

  5. Sélectionnez Firestore en mode natif pour le mode de fonctionnement, qui est compatible avec les opérations Core et les opérations de pipeline.

  6. Sélectionnez un emplacement pour la base de données.

  7. Sélectionnez un mode de démarrage pour vos Cloud Firestore Security Rules :

    Mode test

    Convient pour se familiariser avec les bibliothèques clientes mobiles et Web, mais permet à tout le monde de lire et d'écraser les données. Après le test, veillez à consulter la section Sécuriser vos données.

    Pour commencer à utiliser le SDK Web, Apple ou Android, sélectionnez le mode test.

    Mode production

    Refuse toutes les lectures et écritures des clients mobiles et Web. Vos serveurs d'applications authentifiés (Node.js, Python, Java) peuvent toujours accéder à votre base de données.

    Votre ensemble initial de Cloud Firestore Security Rules s'appliquera à votre base de données par défaut Cloud Firestore. Si vous créez plusieurs bases de données pour votre projet, vous pouvez déployer Cloud Firestore Security Rules pour chaque base de données.

  8. Cliquez sur Créer.

Lorsque vous activez Cloud Firestore, cela active également l'API dans le Cloud API Manager.

Configurer l'environnement de développement

Ajoutez les dépendances et les bibliothèques clientes requises pour votre application.

Node.js
  1. Ajoutez le SDK Admin Firebase à votre application :
    npm install firebase-admin --save
  2. Suivez les instructions ci-dessous pour initialiser Cloud Firestore avec les identifiants appropriés dans votre environnement.
Python
  1. Ajoutez le SDK Admin Firebase à votre application Python :
    pip install --upgrade firebase-admin
  2. Suivez les instructions ci-dessous pour initialiser Cloud Firestore avec les identifiants appropriés dans votre environnement.
Java
  1. Ajoutez le SDK Admin Firebase à votre application :
    • Avec Gradle :
      implementation 'com.google.firebase:firebase-admin:9.8.0'
    • Avec Maven :
      <dependency>
        <groupId>com.google.firebase</groupId>
        <artifactId>firebase-admin</artifactId>
        <version>9.8.0</version>
      </dependency>
           
  2. Suivez les instructions ci-dessous pour initialiser Cloud Firestore avec les identifiants appropriés dans votre environnement.

Initialiser Cloud Firestore

Initialisez une instance de Cloud Firestore :

Node.js
Le SDK Cloud Firestore est initialisé de différentes manières en fonction de votre environnement. Vous trouverez ci-dessous les méthodes les plus courantes. Pour obtenir une documentation de référence complète, consultez Initialiser le SDK Admin.
  • Initialiser sur Cloud Functions
    const { initializeApp, applicationDefault, cert } = require('firebase-admin/app');
    const { getFirestore, Timestamp, FieldValue, Filter } = require('firebase-admin/firestore');
    initializeApp();
    
    const db = getFirestore();
    
  • Initialiser sur Google Cloud
    const { initializeApp, applicationDefault, cert } = require('firebase-admin/app');
    const { getFirestore, Timestamp, FieldValue, Filter } = require('firebase-admin/firestore');
    initializeApp({
      credential: applicationDefault()
    });
    
    const db = getFirestore();
  • Initialiser sur votre propre serveur

    Pour utiliser le SDK Admin Firebase sur votre propre serveur (ou tout autre environnement Node.js), utilisez un compte de service. Accédez à IAM et administration > Comptes de service dans la console Google Cloud. Générez une clé privée et enregistrez le fichier JSON. Utilisez ensuite le fichier pour initialiser le SDK :

    const { initializeApp, applicationDefault, cert } = require('firebase-admin/app');
    const { getFirestore, Timestamp, FieldValue, Filter } = require('firebase-admin/firestore');
    const serviceAccount = require('./path/to/serviceAccountKey.json');
    
    initializeApp({
      credential: cert(serviceAccount)
    });
    
    const db = getFirestore();
    
Python
Le SDK Cloud Firestore est initialisé de différentes manières en fonction de votre environnement. Vous trouverez ci-dessous les méthodes les plus courantes. Pour obtenir une documentation de référence complète, consultez Initialiser le SDK Admin.
  • Initialiser sur Google Cloud
    import firebase_admin
    from firebase_admin import firestore
    
    # Application Default credentials are automatically created.
    app = firebase_admin.initialize_app()
    db = firestore.client()

    Vous pouvez également utiliser un identifiant par défaut d'application existant pour initialiser le SDK.

    import firebase_admin
    from firebase_admin import credentials
    from firebase_admin import firestore
    
    # Use the application default credentials.
    cred = credentials.ApplicationDefault()
    
    firebase_admin.initialize_app(cred)
    db = firestore.client()
  • Initialiser sur votre propre serveur

    Pour utiliser le SDK Admin Firebase sur votre propre serveur, utilisez un compte de service.

    Accédez à IAM et administration > Comptes de service dans la console Google Cloud. Générez une clé privée et enregistrez le fichier JSON Utilisez ensuite le fichier pour initialiser le SDK :

    import firebase_admin
    from firebase_admin import credentials
    from firebase_admin import firestore
    
    # Use a service account.
    cred = credentials.Certificate('path/to/serviceAccount.json')
    
    app = firebase_admin.initialize_app(cred)
    
    db = firestore.client()
  • Java
    Le SDK Cloud Firestore est initialisé de différentes manières en fonction de votre environnement. Vous trouverez ci-dessous les méthodes les plus courantes. Pour obtenir une documentation de référence complète, consultez Initialiser le SDK Admin.
  • Initialiser sur Google Cloud
    import com.google.auth.oauth2.GoogleCredentials;
    import com.google.cloud.firestore.Firestore;
    
    import com.google.firebase.FirebaseApp;
    import com.google.firebase.FirebaseOptions;
    
    // Use the application default credentials
    GoogleCredentials credentials = GoogleCredentials.getApplicationDefault();
    FirebaseOptions options = new FirebaseOptions.Builder()
        .setCredentials(credentials)
        .setProjectId(projectId)
        .build();
    FirebaseApp.initializeApp(options);
    
    Firestore db = FirestoreClient.getFirestore();
  • Initialiser sur votre propre serveur

    Pour utiliser le SDK Admin Firebase sur votre propre serveur, utilisez un compte de service.

    Accédez à IAM et administration > Comptes de service dans la console Google Cloud. Générez une clé privée et enregistrez le fichier JSON Utilisez ensuite le fichier pour initialiser le SDK :

    import com.google.auth.oauth2.GoogleCredentials;
    import com.google.cloud.firestore.Firestore;
    
    import com.google.firebase.FirebaseApp;
    import com.google.firebase.FirebaseOptions;
    
    // Use a service account
    InputStream serviceAccount = new FileInputStream("path/to/serviceAccount.json");
    GoogleCredentials credentials = GoogleCredentials.fromStream(serviceAccount);
    FirebaseOptions options = new FirebaseOptions.Builder()
        .setCredentials(credentials)
        .build();
    FirebaseApp.initializeApp(options);
    
    Firestore db = FirestoreClient.getFirestore();
  • Ajouter des données à l'aide d'opérations Core

    Pour explorer les opérations Core et les opérations de pipeline pour interroger des données, ajoutez des données à votre base de données à l'aide d'opérations Core.

    Cloud Firestore stocke les données dans des documents, qui sont eux-mêmes stockés dans des collections. Cloud Firestore crée implicitement les collections et les documents nécessaires la première fois qu’une donnée est ajoutée à un document. Vous n'avez pas besoin de créer explicitement les collections ni les documents.

    Créez une collection et un document à l'aide de l'exemple de code ci-dessous.

    Node.js
    const docRef = db.collection('users').doc('alovelace');
    
    await docRef.set({
      first: 'Ada',
      last: 'Lovelace',
      born: 1815
    });
    Java
    DocumentReference docRef = db.collection("users").document("alovelace");
    // Add document data  with id "alovelace" using a hashmap
    Map<String, Object> data = new HashMap<>();
    data.put("first", "Ada");
    data.put("last", "Lovelace");
    data.put("born", 1815);
    //asynchronously write data
    ApiFuture<WriteResult> result = docRef.set(data);
    // ...
    // result.get() blocks on response
    System.out.println("Update time : " + result.get().getUpdateTime());
    Python
    doc_ref = db.collection("users").document("alovelace")
    doc_ref.set({"first": "Ada", "last": "Lovelace", "born": 1815})

    Lire des données à l'aide d'opérations Core

    Utilisez la visionneuse de données de la console Firebase pour vérifier rapidement que vous avez bien ajouté des données à Cloud Firestore.

    Vous pouvez également utiliser la méthode "get" pour récupérer l'ensemble de la collection.

    Node.js
    const snapshot = await db.collection('users').get();
    snapshot.forEach((doc) => {
      console.log(doc.id, '=>', doc.data());
    });
    Python
    users_ref = db.collection("users")
    docs = users_ref.stream()
    
    for doc in docs:
        print(f"{doc.id} => {doc.to_dict()}")
    Java
    // asynchronously retrieve all users
    ApiFuture<QuerySnapshot> query = db.collection("users").get();
    // ...
    // query.get() blocks on response
    QuerySnapshot querySnapshot = query.get();
    List<QueryDocumentSnapshot> documents = querySnapshot.getDocuments();
    for (QueryDocumentSnapshot document : documents) {
      System.out.println("User: " + document.getId());
      System.out.println("First: " + document.getString("first"));
      if (document.contains("middle")) {
        System.out.println("Middle: " + document.getString("middle"));
      }
      System.out.println("Last: " + document.getString("last"));
      System.out.println("Born: " + document.getLong("born"));
    }

    Lire des données à l'aide d'opérations de pipeline

    Vous pouvez maintenant comparer l'expérience de requête de pipeline avec l'expérience de requête Core.

    Node.js
    const readDataPipeline = db.pipeline()
      .collection("users");
    
    // Execute the pipeline and handle the result
    try {
      const querySnapshot = await readDataPipeline.execute();
      querySnapshot.results.forEach((result) => {
        console.log(`${result.id} => ${result.data()}`);
      });
    } catch (error) {
        console.error("Error getting documents: ", error);
    }
    Python
    pipeline = client.pipeline().collection("users")
    for result in pipeline.execute():
        print(f"{result.id} => {result.data()}")
    Java
    Pipeline pipeline = firestore.pipeline().collection("users");
    ApiFuture<Pipeline.Snapshot> future = pipeline.execute();
    for (com.google.cloud.firestore.PipelineResult result : future.get().getResults()) {
      System.out.println(result.getId() + " => " + result.getData());
    }
    // or, asynchronously
    pipeline.execute(
        new ApiStreamObserver<com.google.cloud.firestore.PipelineResult>() {
          @Override
          public void onNext(com.google.cloud.firestore.PipelineResult result) {
            System.out.println(result.getId() + " => " + result.getData());
          }
    
          @Override
          public void onError(Throwable t) {
            System.err.println(t);
          }
    
          @Override
          public void onCompleted() {
            System.out.println("done");
          }
        });

    Étapes suivantes

    Approfondissez vos connaissances sur les opérations Core et les opérations de pipeline en consultant les sujets suivants :