Erste Schritte mit der Firestore Enterprise-Version mit Server-Clientbibliotheken

In dieser Kurzanleitung erfahren Sie, wie Sie Cloud Firestore einrichten, Daten hinzufügen und dann entweder Core- oder Pipeline-Vorgänge verwenden, um die gerade hinzugefügten Daten in der Firebase Console mit Server-Clientbibliotheken für Java, Node.js und Python abzufragen.

Mit diesen Clientbibliotheken können Sie privilegierte Serverumgebungen mit vollem Zugriff auf Ihre Datenbank einrichten.

Cloud Firestore-Datenbank erstellen

  1. Falls noch nicht geschehen, erstellen Sie ein Firebase-Projekt: Klicken Sie in der Firebase Console auf Projekt hinzufügen und folgen Sie der Anleitung auf dem Bildschirm, um ein Firebase-Projekt zu erstellen oder Firebase-Dienste zu einem vorhandenen Google Cloud-Projekt hinzuzufügen.

  2. Gehen Sie im linken Bereich zu Datenbanken und Speicher > Firestore.

  3. Klicken Sie auf Datenbank erstellen.

  4. Wählen Sie als Datenbankmodus Enterprise aus.

  5. Wählen Sie Firestore im nativen Modus als Betriebsmodus aus, der Core- und Pipeline-Vorgänge unterstützt.

  6. Wählen Sie einen Speicherort für Ihre Datenbank aus.

  7. Wähle einen Startmodus für dein Cloud Firestore Security Rules aus:

    Testmodus

    Gut für den Einstieg in die mobilen und Web-Clientbibliotheken, aber jeder kann Ihre Daten lesen und überschreiben. Lesen Sie nach dem Testen den Abschnitt Daten schützen.

    Wählen Sie den Testmodus aus, um mit dem Web, Apple-Plattformen oder dem Android SDK zu beginnen.

    Produktionsmodus

    Verweigert alle Lese- und Schreibvorgänge von Mobil- und Webclients. Ihre authentifizierten Anwendungsserver (Node.js, Python, Java) können weiterhin auf Ihre Datenbank zugreifen.

    Ihre anfänglichen Cloud Firestore Security Rules gelten für Ihre Standarddatenbank Cloud Firestore. Wenn Sie mehrere Datenbanken für Ihr Projekt erstellen, können Sie Cloud Firestore Security Rules für jede Datenbank bereitstellen.

  8. Klicken Sie auf Erstellen.

Wenn Sie Cloud Firestore aktivieren, wird die API auch im Cloud API Manager aktiviert.

Entwicklungsumgebung einrichten

Fügen Sie Ihrer Anwendung die erforderlichen Abhängigkeiten und Clientbibliotheken hinzu.

Node.js
  1. Fügen Sie Ihrer App das Firebase Admin SDK hinzu:
    npm install firebase-admin --save
  2. Folgen Sie der Anleitung unten, um Cloud Firestore mit den richtigen Anmeldedaten in Ihrer Umgebung zu initialisieren.
Python
  1. Fügen Sie Ihrer Python-Anwendung das Firebase Admin SDK hinzu:
    pip install --upgrade firebase-admin
  2. Folgen Sie der Anleitung unten, um Cloud Firestore mit den richtigen Anmeldedaten in Ihrer Umgebung zu initialisieren.
Java
  1. Fügen Sie Ihrer App das Firebase Admin SDK hinzu:
    • Mit Gradle:
      implementation 'com.google.firebase:firebase-admin:9.11.0'
    • Mit Maven:
      <dependency>
        <groupId>com.google.firebase</groupId>
        <artifactId>firebase-admin</artifactId>
        <version>9.11.0</version>
      </dependency>
           
  2. Folgen Sie der Anleitung unten, um Cloud Firestore mit den richtigen Anmeldedaten in Ihrer Umgebung zu initialisieren.

Cloud Firestore initialisieren

Initialisieren Sie eine Instanz von Cloud Firestore:

Node.js
Das Cloud Firestore SDK wird je nach Umgebung auf unterschiedliche Weise initialisiert. Nachfolgend finden Sie die gängigsten Methoden. Eine vollständige Referenz finden Sie unter Admin SDK initialisieren.
  • Am Cloud Functions initialisieren
    const { initializeApp, applicationDefault, cert } = require('firebase-admin/app');
    const { getFirestore, Timestamp, FieldValue, Filter } = require('firebase-admin/firestore');
    initializeApp();
    
    const db = getFirestore();
    
  • Am Google Cloud initialisieren
    const { initializeApp, applicationDefault, cert } = require('firebase-admin/app');
    const { getFirestore, Timestamp, FieldValue, Filter } = require('firebase-admin/firestore');
    initializeApp({
      credential: applicationDefault()
    });
    
    const db = getFirestore();
  • Auf dem eigenen Server initialisieren

    Wenn Sie das Firebase Admin SDK auf Ihrem eigenen Server (oder in einer anderen Node.js-Umgebung) verwenden möchten, verwenden Sie ein Dienstkonto. Rufen Sie in der Google Cloud Console IAM und Verwaltung > Dienstkonten auf. Generieren Sie einen neuen privaten Schlüssel und speichern Sie die JSON-Datei. Verwenden Sie dann die Datei, um das SDK zu initialisieren:

    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
Das Cloud Firestore SDK wird je nach Umgebung auf unterschiedliche Weise initialisiert. Nachfolgend finden Sie die gängigsten Methoden. Eine vollständige Referenz finden Sie unter Admin SDK initialisieren.
  • Am Google Cloud initialisieren
    import firebase_admin
    from firebase_admin import firestore
    
    # Application Default credentials are automatically created.
    app = firebase_admin.initialize_app()
    db = firestore.client()

    Zum Initialisieren des SDK können auch vorhandene Standardanmeldedaten für Anwendungen verwendet werden.

    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()
  • Auf dem eigenen Server initialisieren

    Wenn Sie das Firebase Admin SDK auf Ihrem eigenen Server verwenden möchten, verwenden Sie ein Dienstkonto.

    Rufen Sie in der Google Cloud Console IAM und Verwaltung > Dienstkonten auf. Generieren Sie einen neuen privaten Schlüssel und speichern Sie die JSON-Datei. Verwenden Sie dann die Datei, um das SDK zu initialisieren:

    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
    Das Cloud Firestore SDK wird je nach Umgebung auf unterschiedliche Weise initialisiert. Nachfolgend finden Sie die gängigsten Methoden. Eine vollständige Referenz finden Sie unter Admin SDK initialisieren.
  • Am Google Cloud initialisieren
    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();
  • Auf dem eigenen Server initialisieren

    Wenn Sie das Firebase Admin SDK auf Ihrem eigenen Server verwenden möchten, verwenden Sie ein Dienstkonto.

    Rufen Sie in der Google Cloud Console IAM und Verwaltung > Dienstkonten auf. Generieren Sie einen neuen privaten Schlüssel und speichern Sie die JSON-Datei. Verwenden Sie dann die Datei, um das SDK zu initialisieren:

    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();
  • Daten mit Core-Vorgängen hinzufügen

    Wenn Sie Core- und Pipeline-Vorgänge zum Abfragen von Daten kennenlernen möchten, fügen Sie Ihrer Datenbank mithilfe von Core-Vorgängen Daten hinzu.

    Cloud Firestore speichert Daten in Dokumenten, die in Sammlungen gespeichert werden. Cloud Firestore erstellt Sammlungen und Dokumente implizit, wenn Sie dem Dokument zum ersten Mal Daten hinzufügen. Sie müssen Sammlungen oder Dokumente nicht explizit erstellen.

    Mit dem folgenden Beispielcode können Sie eine neue Sammlung und ein Dokument erstellen.

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

    Daten mit Core-Vorgängen lesen

    Mit dem Daten-Viewer in der Firebase Console können Sie schnell prüfen, ob Sie Daten zu Cloud Firestore hinzugefügt haben.

    Sie können auch die Methode „get“ verwenden, um die gesamte Sammlung abzurufen.

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

    Daten mit Pipelinevorgängen lesen

    Jetzt können Sie die Pipeline-Abfrage mit der Core-Abfrage vergleichen.

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

    Nächste Schritte

    Vertiefen Sie Ihr Wissen über Core- und Pipeline-Vorgänge mit den folgenden Themen: