0

Ich erhalte ein unerwartetes Verhalten von Firebase Cloud Functions, in dem die unten angegebene Funktion anscheinend nicht ausgeführt wird. Meine Erwartung ist, dass die Daten im /posts Endpunkt in der Konsole geloggt werden. Ich bekomme keine Fehler bei der Bereitstellung der Funktion.Firebase-Cloud-Funktionen, die nicht ausgeführt werden

Die Funktion ist für eine Back-End-Aktion, an der der Client/Benutzer nicht beteiligt ist. Ein Trigger basierend auf Datenbankereignissen oder https funktioniert nicht, ohne einen anderen Server zum Aufrufen des Endpunkts einzurichten.

Gibt es einen Grund, warum die unten nicht protokollieren?

const functions = require('firebase-functions'); 
const admin = require('firebase-admin'); 
admin.initializeApp(functions.config().firebase); 


getScheduledPosts =() => { 
      admin.database().ref("/posts") 
      .orderByKey() 
      .once("value") 
      .then((snapshot) => { 
       console.log(snapshot); 
      }) 
      .catch(err => {console.log(err)}); 
      console.log("Posts Ran") 
     } 

    // Call this function 
    getScheduledPosts(); 

Antwort

1

Sie definieren hier keine Cloud-Funktion. Da Sie keine Cloud-Funktionen definiert haben, wird der von Ihnen geschriebene Code niemals ausgeführt. Sie müssen einen aus Ihrer index.js exportieren, und seine Definition muss mit dem SDK fire base-functions erstellt werden. Wenn Sie versuchen, ein database trigger (auf jeden Fall die Dokumentation lesen Sie dort) zu schaffen, ist es so etwas wie folgt aussieht:

exports.makeUppercase = functions.database.ref('/posts/{id}') 
    .onWrite(event => { 
    // do stuff here 
}) 

Versuchen Sie nicht, „one-off“ zu tun, die ausgeführt werden soll, wenn eine Funktion ist bereitgestellt. So funktioniert Cloud Functions nicht. Funktionen sollen als Reaktion auf Ereignisse in Ihrem Projekt ausgeführt werden.

+0

Ich habe nur die Funktion aufgerufen, um zu überprüfen, ob es ausgeführt wurde, während ich versuchte, das Problem zu beheben. Ich habe eine zweite Funktion als Export, aber das läuft entweder – fitzmode

+0

Um hinzuzufügen, ist die Funktion für einen Back-End-Betrieb, daher möchte ich eine Möglichkeit, es wie gewünscht aus einer Back-End-Umgebung und nicht auf Client-Anforderungen aufzurufen. Ist das mit Cloud-Funktionen nicht möglich? – fitzmode

+0

Wenn Sie eine Funktion bei Bedarf zu einem Zeitpunkt Ihrer Wahl aufrufen möchten, verwenden Sie eine HTTPS-Funktion und pingen Sie die URL dafür an. Sichern Sie diesen Endpunkt nach Bedarf. –

Verwandte Themen