Inizia a utilizzare Firestore Enterprise Edition utilizzando le librerie client server

Questa guida rapida mostra come configurare Cloud Firestore, aggiungere dati e poi utilizzare le operazioni di base o le operazioni della pipeline per eseguire query sui dati appena aggiunti nella Firebase console utilizzando le librerie client server per Java, Node.js e Python.

Utilizza queste librerie client per configurare ambienti server con privilegi con accesso completo al tuo database.

Creare un database Cloud Firestore

  1. Se non l'hai ancora fatto, crea un progetto Firebase: nella Firebase console, fai clic su Aggiungi progetto, quindi segui le istruzioni sullo schermo per creare un progetto Firebase o per aggiungere i servizi Firebase a un progetto Google Cloud esistente.

  2. Apri il progetto nella console Firebase. Nel riquadro a sinistra, espandi Crea e seleziona Database Firestore.

  3. Fai clic su Crea database.

  4. Seleziona Enterprise per la modalità database.

  5. Seleziona Firestore in modalità nativa per la modalità di funzionamento, che supporta le operazioni di base e le operazioni della pipeline.

  6. Seleziona una località per il database.

  7. Seleziona una modalità di avvio per i tuoi Cloud Firestore Security Rules:

    Modalità di prova

    Ideale per iniziare a utilizzare le librerie client web e su dispositivi mobili, ma consente a chiunque di leggere e sovrascrivere i dati. Dopo il test, assicurati di esaminare la sezione Proteggere i dati.

    Per iniziare a utilizzare l'SDK web, per le piattaforme Apple o per l'SDK Android, seleziona la modalità di prova.

    Modalità di produzione

    Nega tutte le letture e le scritture da client web e su dispositivi mobili. I server delle applicazioni autenticati (Node.js, Python, Java) possono comunque accedere al database.

    Il set iniziale di Cloud Firestore Security Rules si applicherà al database Cloud Firestore predefinito. Se crei più database per il tuo progetto, puoi implementare Cloud Firestore Security Rules per ogni database.

  8. Fai clic su Crea.

Quando abiliti Cloud Firestore, viene abilitata anche l'API in Cloud API Manager.

Configurazione dell'ambiente di sviluppo

Aggiungi le dipendenze e le librerie client necessarie alla tua app.

Node.js
  1. Aggiungi l'SDK Firebase Admin alla tua app:
    npm install firebase-admin --save
  2. Segui le istruzioni riportate di seguito per inizializzare Cloud Firestore con le credenziali corrette nel tuo ambiente.
Python
  1. Aggiungi l'SDK Firebase Admin alla tua app Python:
    pip install --upgrade firebase-admin
  2. Segui le istruzioni riportate di seguito per inizializzare Cloud Firestore con le credenziali corrette nel tuo ambiente.
Java
  1. Aggiungi l'SDK Firebase Admin alla tua app:
    • Utilizzo di Gradle:
      implementation 'com.google.firebase:firebase-admin:9.8.0'
    • Utilizzo di Maven:
      <dependency>
        <groupId>com.google.firebase</groupId>
        <artifactId>firebase-admin</artifactId>
        <version>9.8.0</version>
      </dependency>
           
  2. Segui le istruzioni riportate di seguito per inizializzare Cloud Firestore con le credenziali corrette nel tuo ambiente.

Inizializzare Cloud Firestore

Inizializza un'istanza di Cloud Firestore:

Node.js
L'Cloud Firestore SDK viene inizializzato in modi diversi a seconda dell'ambiente. Di seguito sono riportati i metodi più comuni. Per un riferimento completo, consulta Inizializzare l'SDK Admin.
  • Inizializzare su Cloud Functions
    const { initializeApp, applicationDefault, cert } = require('firebase-admin/app');
    const { getFirestore, Timestamp, FieldValue, Filter } = require('firebase-admin/firestore');
    initializeApp();
    
    const db = getFirestore();
    
  • Inizializzare su 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();
  • Inizializzare sul tuo server

    Per utilizzare l'SDK Firebase Admin sul tuo server (o su qualsiasi altro ambiente Node.js), utilizza un account di servizio. Vai a IAM e amministrazione > Account di servizio nella console Google Cloud. Genera una nuova chiave privata e salva il file JSON. Quindi utilizza il file per inizializzare l'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
L'Cloud Firestore SDK viene inizializzato in modi diversi a seconda dell'ambiente. Di seguito sono riportati i metodi più comuni. Per un riferimento completo, consulta Inizializzare l'SDK Admin.
  • Inizializzare su Google Cloud
    import firebase_admin
    from firebase_admin import firestore
    
    # Application Default credentials are automatically created.
    app = firebase_admin.initialize_app()
    db = firestore.client()

    Per inizializzare l'SDK è possibile utilizzare anche una credenziale predefinita dell'applicazione esistente.

    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()
  • Inizializzare sul tuo server

    Per utilizzare l'SDK Firebase Admin sul tuo server, utilizza un account di servizio.

    Vai a IAM e amministrazione > Account di servizio nella console Google Cloud. Genera una nuova chiave privata e salva il file JSON file. Quindi utilizza il file per inizializzare l'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
    L'Cloud Firestore SDK viene inizializzato in modi diversi a seconda dell'ambiente. Di seguito sono riportati i metodi più comuni. Per un riferimento completo, consulta Inizializzare l'SDK Admin.
  • Inizializzare su 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();
  • Inizializzare sul tuo server

    Per utilizzare l'SDK Firebase Admin sul tuo server, utilizza un account di servizio.

    Vai a IAM e amministrazione > Account di servizio nella console Google Cloud. Genera una nuova chiave privata e salva il file JSON file. Quindi utilizza il file per inizializzare l'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();
  • Aggiungere dati utilizzando le operazioni di base

    Per esplorare le operazioni di base e le operazioni della pipeline per l'esecuzione di query sui dati, aggiungi dati al database utilizzando le operazioni di base.

    Cloud Firestore archivia i dati in documenti, che vengono archiviati in raccolte. Cloud Firestore crea raccolte e documenti in modo implicito la prima volta che aggiungi dati al documento. Non è necessario creare esplicitamente raccolte o documenti.

    Crea una nuova raccolta e un documento utilizzando il seguente codice di esempio.

    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})

    Leggere i dati utilizzando le operazioni di base

    Utilizza il visualizzatore di dati nella Console Firebase per verificare rapidamente di aver aggiunto dati a Cloud Firestore.

    Puoi anche utilizzare il metodo "get" per recuperare l'intera raccolta.

    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"));
    }

    Leggere i dati utilizzando le operazioni della pipeline

    Ora puoi confrontare l'esperienza di query della pipeline con l'esperienza di query di base.

    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");
          }
        });

    Passaggi successivi

    Approfondisci la tua conoscenza delle operazioni di base e delle operazioni della pipeline con i seguenti argomenti: