Inizia a utilizzare Firestore Standard edition utilizzando le librerie client server

Questa guida rapida mostra come configurare Firestore Enterprise, aggiungere dati e visualizzarli nella console Firebase utilizzando le librerie client server per C#, Go, Java, Node.js, PHP, Python e Ruby.

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

Crea un database Cloud Firestore

  1. Se non l'hai ancora fatto, crea un progetto Firebase: nella console Firebase, 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. Nel riquadro a sinistra, vai a Database e spazio di archiviazione > Firestore.

  3. Fai clic su Crea database.

  4. Seleziona una località per il database.

    Se non riesci a selezionare una località, significa che la "località per le risorse Google Cloud predefinite" del progetto è già stata impostata. Alcune risorse del progetto (come l'istanza Cloud Firestore predefinita) condividono una dipendenza dalla località comune e la loro località può essere impostata durante la creazione del progetto o durante la configurazione di un altro servizio che condivide questa dipendenza dalla località.

  5. Seleziona una modalità di avvio per Cloud Firestore Security Rules:

    Modalità di test

    Ideale per iniziare a utilizzare le librerie client mobile e web, ma consente a chiunque di leggere e sovrascrivere i tuoi dati. Dopo i test, assicurati di consultare la sezione Proteggi i tuoi dati.

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

    Modalità di produzione

    Rifiuta tutte le operazioni di lettura e scrittura dei client web e su dispositivi mobili. I server delle applicazioni autenticati (C#, Go, Java, Node.js, PHP, Python o Ruby) possono comunque accedere al tuo database.

    Per iniziare a utilizzare la libreria client server C#, Go, Java, Node.js, PHP, Python o Ruby, seleziona la modalità di produzione.

    Il tuo set iniziale di Cloud Firestore Security Rules verrà applicato al database Cloud Firestore predefinito. Se crei più database per il tuo progetto, puoi eseguire il deployment di Cloud Firestore Security Rules per ogni database.

  6. Fai clic su Crea.

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

Configurazione dell'ambiente di sviluppo

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

Java
  1. Aggiungi l'SDK Firebase Admin alla tua app:
    • Utilizzo di Gradle:
      implementation 'com.google.firebase:firebase-admin:9.11.0'
    • Utilizzo di Maven:
      <dependency>
        <groupId>com.google.firebase</groupId>
        <artifactId>firebase-admin</artifactId>
        <version>9.11.0</version>
      </dependency>
           
  2. Segui le istruzioni riportate di seguito per inizializzare Cloud Firestore con le credenziali appropriate 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 appropriate nel tuo ambiente.
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 appropriate nel tuo ambiente.
Vai
  1. Aggiungi l'SDK Firebase Admin alla tua app Go:
    go get firebase.google.com/go
  2. Segui le istruzioni riportate di seguito per inizializzare Cloud Firestore con le credenziali appropriate nel tuo ambiente.
PHP
  1. Le librerie client server Cloud Firestore (Java, Node.js, Python, Go, PHP, C# e Ruby) utilizzano le Credenziali predefinite dell'applicazione Google per l'autenticazione.
    • Per eseguire l'autenticazione dal tuo ambiente di sviluppo, imposta la variabile di ambiente GOOGLE_APPLICATION_CREDENTIALS in modo che punti a un file di chiavi JSON dell'account di servizio. Puoi creare un file di chiave nella pagina Credenziali della console API.
      export GOOGLE_APPLICATION_CREDENTIALS="path/to/your/keyfile.json"
    • Nell'ambiente di produzione, non è necessario eseguire l'autenticazione se esegui l'applicazione su App Engine o Compute Engine, utilizzando lo stesso progetto che utilizzi per Cloud Firestore. In caso contrario, configura un service account.
  2. Installa e attiva l'estensione gRPC per PHP, che dovrai utilizzare con la libreria client.
  3. Aggiungi la libreria PHP di Cloud Firestore alla tua app:
    composer require google/cloud-firestore
Ruby
  1. Le librerie client server Cloud Firestore (Java, Node.js, Python, Go, PHP, C# e Ruby) utilizzano le Credenziali predefinite dell'applicazione Google per l'autenticazione.
    • Per eseguire l'autenticazione dal tuo ambiente di sviluppo, imposta la variabile di ambiente GOOGLE_APPLICATION_CREDENTIALS in modo che punti a un file di chiavi JSON dell'account di servizio. Puoi creare un file di chiave nella pagina Credenziali della console API.
      export GOOGLE_APPLICATION_CREDENTIALS="path/to/your/keyfile.json"
    • Nel tuo ambiente di produzione, non è necessario eseguire l'autenticazione se esegui l'applicazione su App Engine o Compute Engine, utilizzando lo stesso progetto che utilizzi per Cloud Firestore. In caso contrario, configura un service account.
  2. Aggiungi la libreria Ruby di Cloud Firestore alla tua app nel Gemfile:
    gem "google-cloud-firestore"
  3. Installa le dipendenze dal tuo Gemfile utilizzando:
    bundle install

(Facoltativo) Crea prototipi ed esegui test con Firebase Local Emulator Suite

Per gli sviluppatori di app mobile, prima di parlare di come l'app scrive e legge da Cloud Firestore, introduciamo un insieme di strumenti che puoi utilizzare per creare prototipi e testare la funzionalità di Cloud Firestore: Firebase Local Emulator Suite. Se stai provando diversi modelli di dati, ottimizzando le regole di sicurezza o cercando di trovare il modo più conveniente per interagire con il backend, poter lavorare localmente senza eseguire il deployment di servizi live può essere un'ottima idea.

Un emulatore Cloud Firestore fa parte della Local Emulator Suite, che consente alla tua app di interagire con i contenuti e la configurazione del database emulato, nonché, facoltativamente, con le risorse del progetto emulato (funzioni, altri database e regole di sicurezza).

L'utilizzo dell'emulatore Cloud Firestore prevede solo alcuni passaggi:

  1. Aggiunta di una riga di codice alla configurazione di test dell'app per connetterti all'emulatore.
  2. Dalla directory principale del progetto locale, esegui firebase emulators:start.
  3. Effettuare chiamate dal codice del prototipo dell'app utilizzando un SDK della piattaforma Cloud Firestore come di consueto.

È disponibile una procedura dettagliata che coinvolge Cloud Firestore e Cloud Functions. Ti consigliamo inoltre di dare un'occhiata all'introduzione a Local Emulator Suite.

Inizializza Cloud Firestore

Inizializza un'istanza di Cloud Firestore:

Java
L'SDK Cloud Firestore viene inizializzato in modi diversi a seconda dell'ambiente. Di seguito sono riportati i metodi più comuni. Per un riferimento completo, consulta Inizializza l'SDK Admin.
  • Inizializza 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();
  • Inizializza sul tuo server

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

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

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

    Vai a IAM e amministrazione > Account di servizio nella console Google Cloud. Genera una nuova chiave privata e salva il file JSON. Poi 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()
  • Python

    L'SDK Cloud Firestore viene inizializzato in modi diversi a seconda dell'ambiente. Di seguito sono riportati i metodi più comuni. Per un riferimento completo, consulta Inizializza l'SDK Admin.
  • Inizializza su Google Cloud
    import firebase_admin
    from firebase_admin import firestore_async
    
    # Application Default credentials are automatically created.
    app = firebase_admin.initialize_app()
    db = firestore_async.client()

    Per inizializzare l'SDK, puoi anche utilizzare una credenziale predefinita dell'applicazione esistente.

    import firebase_admin
    from firebase_admin import credentials
    from firebase_admin import firestore_async
    
    # Use the application default credentials.
    cred = credentials.ApplicationDefault()
    
    firebase_admin.initialize_app(cred)
    db = firestore_async.client()
  • Inizializza sul tuo server

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

    Vai a IAM e amministrazione > Account di servizio nella console Google Cloud. Genera una nuova chiave privata e salva il file JSON. Poi utilizza il file per inizializzare l'SDK:

    import firebase_admin
    from firebase_admin import credentials
    from firebase_admin import firestore_async
    
    # Use a service account.
    cred = credentials.Certificate('path/to/serviceAccount.json')
    
    app = firebase_admin.initialize_app(cred)
    
    db = firestore_async.client()
  • Node.js
    L'SDK Cloud Firestore viene inizializzato in modi diversi a seconda dell'ambiente. Di seguito sono riportati i metodi più comuni. Per un riferimento completo, consulta Inizializza l'SDK Admin.
    • Inizializza su Cloud Functions
      const { initializeApp, applicationDefault, cert } = require('firebase-admin/app');
      const { getFirestore, Timestamp, FieldValue, Filter } = require('firebase-admin/firestore');
      initializeApp();
      
      const db = getFirestore();
      
    • Inizializza 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();
    • Inizializza sul tuo server

      Per utilizzare l'SDK Firebase Admin sul tuo server (o in qualsiasi altro ambiente Node.js), utilizza un service account. Vai a IAM e amministrazione > Account di servizio nella console Google Cloud. Genera una nuova chiave privata e salva il file JSON. Poi 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();
      
    Vai
    L'SDK Cloud Firestore viene inizializzato in modi diversi a seconda dell'ambiente. Di seguito sono riportati i metodi più comuni. Per un riferimento completo, consulta Inizializza l'SDK Admin.
  • Inizializza su Google Cloud
    import (
      "log"
    
      firebase "firebase.google.com/go"
      "google.golang.org/api/option"
    )
    
    // Use the application default credentials
    ctx := context.Background()
    conf := &firebase.Config{ProjectID: projectID}
    app, err := firebase.NewApp(ctx, conf)
    if err != nil {
      log.Fatalln(err)
    }
    
    client, err := app.Firestore(ctx)
    if err != nil {
      log.Fatalln(err)
    }
    defer client.Close()
  • Inizializza sul tuo server

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

    Vai a IAM e amministrazione > Account di servizio nella console Google Cloud. Genera una nuova chiave privata e salva il file JSON. Poi utilizza il file per inizializzare l'SDK:

    import (
      "log"
    
      firebase "firebase.google.com/go"
      "google.golang.org/api/option"
    )
    
    // Use a service account
    ctx := context.Background()
    sa := option.WithCredentialsFile("path/to/serviceAccount.json")
    app, err := firebase.NewApp(ctx, nil, sa)
    if err != nil {
      log.Fatalln(err)
    }
    
    client, err := app.Firestore(ctx)
    if err != nil {
      log.Fatalln(err)
    }
    defer client.Close()
  • PHP

    PHP

    Per saperne di più sull'installazione e sulla creazione di un client Cloud Firestore, consulta Librerie client di Cloud Firestore.

    use Google\Cloud\Firestore\FirestoreClient;
    
    /**
     * Initialize Cloud Firestore with default project ID.
     */
    function setup_client_create(string $projectId = null)
    {
        // Create the Cloud Firestore client
        if (empty($projectId)) {
            // The `projectId` parameter is optional and represents which project the
            // client will act on behalf of. If not supplied, the client falls back to
            // the default project inferred from the environment.
            $db = new FirestoreClient();
            printf('Created Cloud Firestore client with default project ID.' . PHP_EOL);
        } else {
            $db = new FirestoreClient([
                'projectId' => $projectId,
            ]);
            printf('Created Cloud Firestore client with project ID: %s' . PHP_EOL, $projectId);
        }
    }
    C#

    C#

    Per saperne di più sull'installazione e sulla creazione di un client Cloud Firestore, consulta Librerie client di Cloud Firestore.

    FirestoreDb db = FirestoreDb.Create(project);
    Console.WriteLine("Created Cloud Firestore client with project ID: {0}", project);
    Ruby
    require "google/cloud/firestore"
    
    # The `project_id` parameter is optional and represents which project the
    # client will act on behalf of. If not supplied, the client falls back to the
    # default project inferred from the environment.
    firestore = Google::Cloud::Firestore.new project_id: project_id
    
    puts "Created Cloud Firestore client with given project ID."

    Aggiungi dati

    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.

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

    Python

    doc_ref = db.collection("users").document("alovelace")
    await doc_ref.set({"first": "Ada", "last": "Lovelace", "born": 1815})
    Node.js
    const docRef = db.collection('users').doc('alovelace');
    
    await docRef.set({
      first: 'Ada',
      last: 'Lovelace',
      born: 1815
    });
    Vai
    _, _, err := client.Collection("users").Add(ctx, map[string]interface{}{
    	"first": "Ada",
    	"last":  "Lovelace",
    	"born":  1815,
    })
    if err != nil {
    	log.Fatalf("Failed adding alovelace: %v", err)
    }
    PHP

    PHP

    Per saperne di più sull'installazione e sulla creazione di un client Cloud Firestore, consulta Librerie client di Cloud Firestore.

    $docRef = $db->collection('samples/php/users')->document('alovelace');
    $docRef->set([
        'first' => 'Ada',
        'last' => 'Lovelace',
        'born' => 1815
    ]);
    printf('Added data to the lovelace document in the users collection.' . PHP_EOL);
    C#
    DocumentReference docRef = db.Collection("users").Document("alovelace");
    Dictionary<string, object> user = new Dictionary<string, object>
    {
        { "First", "Ada" },
        { "Last", "Lovelace" },
        { "Born", 1815 }
    };
    await docRef.SetAsync(user);
    Ruby
    doc_ref = firestore.doc "#{collection_path}/alovelace"
    
    doc_ref.set(
      {
        first: "Ada",
        last:  "Lovelace",
        born:  1815
      }
    )
    
    puts "Added data to the alovelace document in the users collection."

    Ora aggiungi un altro documento alla raccolta users. Tieni presente che questo documento include una coppia chiave-valore (secondo nome) che non compare nel primo documento. I documenti di una raccolta possono contenere insiemi di informazioni diversi.

    Java
    DocumentReference docRef = db.collection("users").document("aturing");
    // Add document data with an additional field ("middle")
    Map<String, Object> data = new HashMap<>();
    data.put("first", "Alan");
    data.put("middle", "Mathison");
    data.put("last", "Turing");
    data.put("born", 1912);
    
    ApiFuture<WriteResult> result = docRef.set(data);
    System.out.println("Update time : " + result.get().getUpdateTime());
    Python
    doc_ref = db.collection("users").document("aturing")
    doc_ref.set({"first": "Alan", "middle": "Mathison", "last": "Turing", "born": 1912})

    Python

    doc_ref = db.collection("users").document("aturing")
    await doc_ref.set(
        {"first": "Alan", "middle": "Mathison", "last": "Turing", "born": 1912}
    )
    Node.js
    const aTuringRef = db.collection('users').doc('aturing');
    
    await aTuringRef.set({
      'first': 'Alan',
      'middle': 'Mathison',
      'last': 'Turing',
      'born': 1912
    });
    Vai
    _, _, err = client.Collection("users").Add(ctx, map[string]interface{}{
    	"first":  "Alan",
    	"middle": "Mathison",
    	"last":   "Turing",
    	"born":   1912,
    })
    if err != nil {
    	log.Fatalf("Failed adding aturing: %v", err)
    }
    PHP

    PHP

    Per saperne di più sull'installazione e sulla creazione di un client Cloud Firestore, consulta Librerie client di Cloud Firestore.

    $docRef = $db->collection('samples/php/users')->document('aturing');
    $docRef->set([
        'first' => 'Alan',
        'middle' => 'Mathison',
        'last' => 'Turing',
        'born' => 1912
    ]);
    printf('Added data to the aturing document in the users collection.' . PHP_EOL);
    C#
    DocumentReference docRef = db.Collection("users").Document("aturing");
    Dictionary<string, object> user = new Dictionary<string, object>
    {
        { "First", "Alan" },
        { "Middle", "Mathison" },
        { "Last", "Turing" },
        { "Born", 1912 }
    };
    await docRef.SetAsync(user);
    Ruby
    doc_ref = firestore.doc "#{collection_path}/aturing"
    
    doc_ref.set(
      {
        first:  "Alan",
        middle: "Mathison",
        last:   "Turing",
        born:   1912
      }
    )
    
    puts "Added data to the aturing document in the users collection."

    Lettura di dati

    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.

    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"));
    }
    Python
    users_ref = db.collection("users")
    docs = users_ref.stream()
    
    for doc in docs:
        print(f"{doc.id} => {doc.to_dict()}")

    Python

    users_ref = db.collection("users")
    docs = users_ref.stream()
    
    async for doc in docs:
        print(f"{doc.id} => {doc.to_dict()}")
    Node.js
    const snapshot = await db.collection('users').get();
    snapshot.forEach((doc) => {
      console.log(doc.id, '=>', doc.data());
    });
    Vai
    iter := client.Collection("users").Documents(ctx)
    for {
    	doc, err := iter.Next()
    	if err == iterator.Done {
    		break
    	}
    	if err != nil {
    		log.Fatalf("Failed to iterate: %v", err)
    	}
    	fmt.Println(doc.Data())
    }
    PHP

    PHP

    Per saperne di più sull'installazione e sulla creazione di un client Cloud Firestore, consulta Librerie client di Cloud Firestore.

    $usersRef = $db->collection('samples/php/users');
    $snapshot = $usersRef->documents();
    foreach ($snapshot as $user) {
        printf('User: %s' . PHP_EOL, $user->id());
        printf('First: %s' . PHP_EOL, $user['first']);
        if (!empty($user['middle'])) {
            printf('Middle: %s' . PHP_EOL, $user['middle']);
        }
        printf('Last: %s' . PHP_EOL, $user['last']);
        printf('Born: %d' . PHP_EOL, $user['born']);
        printf(PHP_EOL);
    }
    printf('Retrieved and printed out all documents from the users collection.' . PHP_EOL);
    C#
    CollectionReference usersRef = db.Collection("users");
    QuerySnapshot snapshot = await usersRef.GetSnapshotAsync();
    foreach (DocumentSnapshot document in snapshot.Documents)
    {
        Console.WriteLine("User: {0}", document.Id);
        Dictionary<string, object> documentDictionary = document.ToDictionary();
        Console.WriteLine("First: {0}", documentDictionary["First"]);
        if (documentDictionary.ContainsKey("Middle"))
        {
            Console.WriteLine("Middle: {0}", documentDictionary["Middle"]);
        }
        Console.WriteLine("Last: {0}", documentDictionary["Last"]);
        Console.WriteLine("Born: {0}", documentDictionary["Born"]);
        Console.WriteLine();
    }
    Ruby
    users_ref = firestore.col collection_path
    users_ref.get do |user|
      puts "#{user.document_id} data: #{user.data}."
    end

    Passaggi successivi

    Approfondisci le tue conoscenze con i seguenti argomenti: