Google is committed to advancing racial equity for Black communities. See how.
Diese Seite wurde von der Cloud Translation API übersetzt.
Switch to English

Erste Schritte: Schreiben, testen und implementieren Sie Ihre ersten Funktionen

Versuchen Sie zunächst, dieses Lernprogramm durchzuarbeiten, das mit den erforderlichen Setup-Aufgaben beginnt und zwei verwandte Funktionen erstellt, testet und bereitstellt:

  • addMessage() , das eine URL addMessage() , die einen addMessage() akzeptiert und in den Cloud Firestore schreibt.
  • makeUppercase() , das beim Schreiben im Cloud Firestore makeUppercase() , wandelt den Text in Großbuchstaben um.

Wir haben für dieses Beispiel Cloud Firestore- und HTTP-ausgelöste JavaScript-Funktionen ausgewählt, da diese Hintergrundauslöser über die Firebase Local Emulator Suite gründlich getestet werden können. Dieses Toolset unterstützt auch aufrufbare Trigger für Echtzeitdatenbanken, PubSub, Auth und HTTP. Andere Arten von Hintergrundauslösern wie Remote Config-, TestLab- und Analytics-Auslöser können interaktiv mit Toolsets getestet werden, die auf dieser Seite nicht beschrieben werden.

In den folgenden Abschnitten dieses Lernprogramms werden die Schritte zum Erstellen, Testen und Bereitstellen des Beispiels beschrieben. Wenn Sie den Code lieber einfach ausführen und überprüfen möchten, fahren Sie mit Überprüfen des vollständigen Beispielcodes fort .

Erstellen Sie ein Firebase-Projekt

  1. In der Firebase - Konsole , klicken Sie auf Hinzufügen Projekt, und wählen oder einen Projektnamen eingeben.

    Wenn Sie über ein vorhandenes GCP-Projekt (Google Cloud Platform) verfügen, können Sie das Projekt aus dem Dropdown-Menü auswählen, um diesem Projekt Firebase-Ressourcen hinzuzufügen.

  2. (Optional) Wenn Sie ein neues Projekt erstellen, können Sie die Projekt-ID bearbeiten.

    Firebase weist Ihrem Firebase-Projekt automatisch eine eindeutige ID zu. Besuchen Sie Firebase-Projekte verstehen , um zu erfahren, wie Firebase die Projekt-ID verwendet.

  3. Klicken Sie auf Weiter .

  4. (Optional) Richten Sie Google Analytics für Ihr Projekt ein, damit Sie mit einem der folgenden Firebase-Produkte eine optimale Erfahrung erzielen können:

    Wenn Sie dazu aufgefordert werden, wählen Sie, ob Sie ein vorhandenes Google Analytics-Konto verwenden oder ein neues Konto erstellen möchten.
    Wenn Sie ein neues Konto erstellen möchten, wählen Sie Ihren Analytics-Berichtsort aus und akzeptieren Sie die Einstellungen für die Datenfreigabe und die Google Analytics-Bedingungen für Ihr Projekt.

  5. Klicken Sie auf Projekt erstellen (oder auf Firebase hinzufügen , wenn Sie ein vorhandenes GCP-Projekt verwenden).

Firebase stellt automatisch Ressourcen für Ihr Firebase-Projekt bereit. Wenn der Vorgang abgeschlossen ist, werden Sie zur Übersichtsseite für Ihr Firebase-Projekt in der Firebase-Konsole weitergeleitet.

Richten Sie Node.js und die Firebase-CLI ein

Sie benötigen eine Node.js- Umgebung, um Funktionen zu schreiben, und Sie benötigen die Firebase-CLI, um Funktionen für die Laufzeit der Cloud-Funktionen bereitzustellen. Für die Installation von Node.js und npm wird Node Version Manager empfohlen.

Sobald Sie Node.js und npm installiert haben, installieren Sie die Firebase-CLI über Ihre bevorzugte Methode. Verwenden Sie zum Installieren der CLI über npm:

 npm install -g firebase-tools
 

Dadurch wird der global verfügbare Befehl firebase installiert. Wenn der Befehl fehlschlägt, müssen Sie möglicherweise die npm-Berechtigungen ändern . Führen Sie denselben Befehl erneut aus, um auf die neueste Version der firebase-tools zu aktualisieren.

Initialisieren Sie das Firebase SDK für Cloud-Funktionen

Wenn Sie Firebase SDK für Cloud-Funktionen initialisieren, erstellen Sie ein leeres Projekt mit Abhängigkeiten und minimalem Beispielcode und wählen entweder TypeScript oder JavaScript zum Erstellen von Funktionen.

So initialisieren Sie Ihr Projekt:

  1. Führen Sie die firebase login um sich über den Browser anzumelden und das Firebase-Tool zu authentifizieren.
  2. Wechseln Sie in Ihr Firebase-Projektverzeichnis.
  3. Führen Sie die firebase init functions . Das Tool bietet Ihnen die Möglichkeit, Abhängigkeiten mit npm zu installieren. Es ist sicher abzulehnen, wenn Sie Abhängigkeiten auf andere Weise verwalten möchten. Wenn Sie jedoch ablehnen, müssen Sie die npm install ausführen, bevor Sie Ihre Funktionen emulieren oder bereitstellen.
  4. Das Tool bietet Ihnen zwei Optionen für die Sprachunterstützung:

    Wählen Sie für dieses Tutorial JavaScript aus .

Nachdem diese Befehle erfolgreich ausgeführt wurden, sieht Ihre Projektstruktur folgendermaßen aus:

 myproject
 +- .firebaserc    # Hidden file that helps you quickly switch between
 |                 # projects with `firebase use`
 |
 +- firebase.json  # Describes properties for your project
 |
 +- functions/     # Directory containing all your functions code
      |
      +- .eslintrc.json  # Optional file containing rules for JavaScript linting.
      |
      +- package.json  # npm package file describing your Cloud Functions code
      |
      +- index.js      # main source file for your Cloud Functions code
      |
      +- node_modules/ # directory where your dependencies (declared in
                       # package.json) are installed
 

Die während der Initialisierung package.json Datei package.json enthält einen wichtigen Schlüssel: "engines": {"node": "8"} package.json "engines": {"node": "8"} . Dies gibt Ihre Knotenversion zum Schreiben und Bereitstellen von Funktionen an. Sie können andere unterstützte Versionen auswählen .

Importieren Sie die erforderlichen Module und initialisieren Sie eine App

Nachdem Sie die Setup-Aufgaben abgeschlossen haben, können Sie das Quellverzeichnis öffnen und mit dem Hinzufügen von Code beginnen, wie in den folgenden Abschnitten beschrieben. Für dieses Beispiel muss Ihr Projekt die Cloud-Funktionen und die Admin-SDK-Module mithilfe von Node require Anweisungen importieren. Fügen Sie Ihrer index.js Datei folgende Zeilen index.js :

// The Cloud Functions for Firebase SDK to create Cloud Functions and setup triggers.
const functions = require('firebase-functions');

// The Firebase Admin SDK to access Cloud Firestore.
const admin = require('firebase-admin');
admin.initializeApp();

Diese Zeilen laden die firebase-functions und firebase-admin Module und initialisieren eine admin App-Instanz, über die Änderungen am Cloud Firestore vorgenommen werden können. Überall dort, wo Admin SDK- Unterstützung verfügbar ist, wie für FCM, Authentifizierung und Firebase-Echtzeitdatenbank, bietet es eine leistungsstarke Möglichkeit, Firebase mithilfe von Cloud-Funktionen zu integrieren.

Die Firebase-CLI installiert automatisch die Knotenmodule Firebase und Firebase SDK für Cloud-Funktionen, wenn Sie Ihr Projekt initialisieren. Um Ihrem Projekt Bibliotheken von Drittanbietern hinzuzufügen, können Sie package.json ändern und npm install ausführen. Weitere Informationen finden Sie unter Behandeln von Abhängigkeiten .

Fügen Sie die Funktion addMessage()

addMessage() für die Funktion addMessage() diese Zeilen zu index.js :

// Take the text parameter passed to this HTTP endpoint and insert it into 
// Cloud Firestore under the path /messages/:documentId/original
exports.addMessage = functions.https.onRequest(async (req, res) => {
  // Grab the text parameter.
  const original = req.query.text;
  // Push the new message into Cloud Firestore using the Firebase Admin SDK.
  const writeResult = await admin.firestore().collection('messages').add({original: original});
  // Send back a message that we've succesfully written the message
  res.json({result: `Message with ID: ${writeResult.id} added.`});
});

Die Funktion addMessage() ist ein HTTP-Endpunkt. Jede Anfrage an die Endpoint - Ergebnisse in Express.js-Stil Anfrage und Antwort Objekte auf den übergebenen onRequest() Rückruf.

HTTP-Funktionen sind synchron (ähnlich wie aufrufbare Funktionen ), daher sollten Sie so schnell wie möglich eine Antwort senden und die Arbeit mit Cloud Firestore verschieben. Die HTTP-Funktion addMessage() übergibt einen addMessage() an den HTTP-Endpunkt und fügt ihn unter dem Pfad /messages/:documentId/original in die Datenbank ein.

Fügen Sie die Funktion makeUppercase()

makeUppercase() für die Funktion makeUppercase() diese Zeilen zu index.js :

// Listens for new messages added to /messages/:documentId/original and creates an
// uppercase version of the message to /messages/:documentId/uppercase
exports.makeUppercase = functions.firestore.document('/messages/{documentId}')
    .onCreate((snap, context) => {
      // Grab the current value of what was written to Cloud Firestore.
      const original = snap.data().original;

      // Access the parameter `{documentId}` with `context.params`
      functions.logger.log('Uppercasing', context.params.documentId, original);
      
      const uppercase = original.toUpperCase();
      
      // You must return a Promise when performing asynchronous tasks inside a Functions such as
      // writing to Cloud Firestore.
      // Setting an 'uppercase' field in Cloud Firestore document returns a Promise.
      return snap.ref.set({uppercase}, {merge: true});
    });

Die Funktion makeUppercase() wird ausgeführt, wenn in den Cloud Firestore geschrieben wird. Die Funktion ref.set definiert das Dokument, das ref.set werden soll. Aus Leistungsgründen sollten Sie so genau wie möglich sein.

Klammern - zum Beispiel {documentId} umgeben "Parameter", Platzhalter, die ihre übereinstimmenden Daten im Rückruf verfügbar machen.

Cloud Firestore löst den Rückruf onWrite() wenn Daten in das angegebene Dokument geschrieben oder aktualisiert werden.

Ereignisgesteuerte Funktionen wie Cloud Firestore-Ereignisse sind asynchron. Die Rückruffunktion sollte entweder eine null , ein Objekt oder ein Versprechen zurückgeben . Wenn Sie nichts zurückgeben, läuft die Funktion ab, signalisiert einen Fehler und wird erneut versucht. Siehe Synchronisieren, Asynchronisieren und Versprechen .

Emulieren Sie die Ausführung Ihrer Funktionen

Mit der Firebase Local Emulator Suite können Sie Apps auf Ihrem lokalen Computer erstellen und testen, anstatt sie für ein Firebase-Projekt bereitzustellen. Lokale Tests während der Entwicklung werden dringend empfohlen, auch weil dadurch das Risiko von Codierungsfehlern verringert wird, die in einer Produktionsumgebung (z. B. einer Endlosschleife) möglicherweise Kosten verursachen können.

So emulieren Sie Ihre Funktionen:

  1. Führen Sie firebase emulators:start Sie die Ausgabe der Benutzeroberfläche der Emulator Suite und überprüfen Sie die Ausgabe. Der Standardwert ist localhost: 4000 , kann jedoch an einem anderen Port Ihres Computers gehostet werden. Geben Sie diese URL in Ihren Browser ein, um die Benutzeroberfläche der Emulator Suite zu öffnen.

  2. Überprüfen Sie die Ausgabe der firebase emulators:start Befehl für die URL der http-Funktion addMessage() . Es sieht ähnlich aus wie http://localhost:5001/MY_PROJECT/us-central1/addMessage , außer dass:

    1. MY_PROJECT wird durch Ihre Projekt-ID ersetzt.
    2. Der Port auf Ihrem lokalen Computer kann unterschiedlich sein.
  3. Fügen Sie die Abfragezeichenfolge ?text=uppercaseme am Ende der URL der Funktion hinzu. Es sollte jetzt http://localhost:5001/MY_PROJECT/us-central1/addMessage?text=uppercaseme so aussehen: http://localhost:5001/MY_PROJECT/us-central1/addMessage?text=uppercaseme . Optional können Sie die Nachricht "uppercaseme" in eine benutzerdefinierte Nachricht ändern.

  4. Erstellen Sie eine neue Nachricht, indem Sie die URL in einem neuen Tab in Ihrem Browser öffnen.

  5. Zeigen Sie die Auswirkungen der Funktionen in der Benutzeroberfläche der Emulator Suite an:

    1. Auf der Registerkarte Protokolle sollten neue Protokolle addMessage() , die darauf hinweisen, dass die Funktionen addMessage() und makeUppercase() :

      i-Funktionen: Beginn der Ausführung von "addMessage"

      i-Funktionen: Beginn der Ausführung von "makeUppercase"

    2. Auf der Registerkarte Firestore sollten Sie ein Dokument sehen, das Ihre ursprüngliche Nachricht sowie die Großbuchstabenversion Ihrer Nachricht enthält (wenn es ursprünglich "Großbuchstaben" war, wird "UPPERCASEME" angezeigt).

Stellen Sie Funktionen in einer Produktionsumgebung bereit

Sobald Ihre Funktionen im Emulator wie gewünscht funktionieren, können Sie sie in der Produktionsumgebung bereitstellen, testen und ausführen. Beachten Sie, dass Ihr Projekt für die Bereitstellung in der empfohlenen Node.js 10-Laufzeitumgebung im Blaze- Abrechnungsplan enthalten sein muss . Siehe Preise für Cloud-Funktionen .

Um das Tutorial abzuschließen, stellen Sie Ihre Funktionen addMessage() und führen addMessage() dann addMessage() , um makeUppercase() auszulösen.

  1. Führen Sie diesen Befehl aus, um Ihre Funktionen bereitzustellen:

     $ firebase deploy --only functions
     

    Nachdem Sie diesen Befehl ausgeführt haben, gibt die Firebase-CLI die URL für alle HTTP-Funktionsendpunkte aus. In Ihrem Terminal sollte eine Zeile wie die folgende angezeigt werden:

     Function URL (addMessage): https://us-central1-MY_PROJECT.cloudfunctions.net/addMessage
     

    Die URL enthält Ihre Projekt-ID sowie eine Region für die HTTP-Funktion. Obwohl Sie sich jetzt keine Sorgen mehr machen müssen, sollten einige HTTP-Produktionsfunktionen einen Speicherort angeben, um die Netzwerklatenz zu minimieren.

    Wenn Zugriffsfehler wie "Zugriff auf Projekt kann nicht autorisiert werden" auftreten, überprüfen Sie das Aliasing Ihres Projekts .

  2. addMessage() mithilfe der von der CLI ausgegebenen URL addMessage() hinzu und öffnen Sie ihn in einem Browser:

     https://us-central1-MY_PROJECT.cloudfunctions.net/addMessage?text=uppercasemetoo
     

    Die Funktion führt den Browser aus und leitet ihn zur Firebase-Konsole am Datenbankspeicherort um, an dem die Textzeichenfolge gespeichert ist. Dieses Schreibereignis löst makeUppercase() , das eine Großbuchstabenversion der Zeichenfolge schreibt.

Nach dem Bereitstellen und Ausführen von Funktionen können Sie Protokolle in der Firebase-Konsole für Cloud-Funktionen anzeigen . Wenn Sie Funktionen in der Entwicklung oder Produktion löschen müssen , verwenden Sie die Firebase-CLI.

Überprüfen Sie den vollständigen Beispielcode

Hier sind die abgeschlossenen functions/index.js die die Funktionen addMessage() und makeUppercase() . Mit diesen Funktionen können Sie einen Parameter an einen HTTP-Endpunkt übergeben, der einen Wert in den Cloud Firestore schreibt, und ihn dann transformieren, indem Sie alle Zeichen in der Zeichenfolge in Großbuchstaben setzen.

// The Cloud Functions for Firebase SDK to create Cloud Functions and setup triggers.
const functions = require('firebase-functions');

// The Firebase Admin SDK to access Cloud Firestore.
const admin = require('firebase-admin');
admin.initializeApp();

// Take the text parameter passed to this HTTP endpoint and insert it into 
// Cloud Firestore under the path /messages/:documentId/original
exports.addMessage = functions.https.onRequest(async (req, res) => {
  // Grab the text parameter.
  const original = req.query.text;
  // Push the new message into Cloud Firestore using the Firebase Admin SDK.
  const writeResult = await admin.firestore().collection('messages').add({original: original});
  // Send back a message that we've succesfully written the message
  res.json({result: `Message with ID: ${writeResult.id} added.`});
});

// Listens for new messages added to /messages/:documentId/original and creates an
// uppercase version of the message to /messages/:documentId/uppercase
exports.makeUppercase = functions.firestore.document('/messages/{documentId}')
    .onCreate((snap, context) => {
      // Grab the current value of what was written to Cloud Firestore.
      const original = snap.data().original;

      // Access the parameter `{documentId}` with `context.params`
      functions.logger.log('Uppercasing', context.params.documentId, original);
      
      const uppercase = original.toUpperCase();
      
      // You must return a Promise when performing asynchronous tasks inside a Functions such as
      // writing to Cloud Firestore.
      // Setting an 'uppercase' field in Cloud Firestore document returns a Promise.
      return snap.ref.set({uppercase}, {merge: true});
    });

Nächste Schritte

In dieser Dokumentation finden Sie weitere Informationen zu allgemeinen Konzepten für Cloud-Funktionen sowie Anleitungen zum Schreiben von Funktionen zur Behandlung der von Cloud-Funktionen unterstützten Ereignistypen.

Um mehr über Cloud-Funktionen zu erfahren, können Sie auch Folgendes tun:

Videoanleitung

Weitere Informationen zu Cloud-Funktionen finden Sie in Video-Tutorials. In diesem Video finden Sie detaillierte Anleitungen zum Einstieg in Cloud-Funktionen, einschließlich Node.js und CLI-Setup.