Ich versuche, eine Funktion für meine Datenbank mit Cloud-Funktionen für Firebase zu erstellen. Der Zweck der Funktion ist das Abhören von Ereignissen in der attend
Tabelle und basierend auf dem Objekt, das zum Identifizieren des Ereignisses geschrieben wurde, und das Inkrementieren des usersAttending
des Ereignisobjekts.Inkrementelle Operation mit Cloud-Funktionen für Firebase
Das ist meine Funktion bisher.
//listens to write on attendObjects (when a user is attending an event), and increments attending users for event
exports.listenAttendingEvents = functions.database.ref('/attend/{pushId}').onWrite(event => {
//get attendObj -> parsed JSON by javascript interpreter
const attentObj = event.data.val();
const attendId = attentObj['attendId'];
const pathToAttendees = '/attends' + '/' + attendId;
// Attach an asynchronous callback to read the data at our posts reference
admin.database().ref(pathToAttendees).on("value", function(snapshot) {
console.log(snapshot.val());
const obj = snapshot.val();
var nrAttending = obj['attending'];
nrAttending = Number(snapshot.val());
return admin.database().ref(pathToAttendees + '/attending').transaction(function (nrAttending) {
return (nrAttending || 0) + 1;
});
});
}, function (errorObject) {
console.log("The read failed: " + errorObject.code);
return errorObject
});
Die Probleme, wie es ist scheint, dass die event object
abgerufen nicht erhalten. Die Funktion scheint vorher mit dem Status ok
you'e kein Versprechen von Ihrem Top-Level-Funktion zurückkehrt, was bedeutet, Google Cloud-Funktionen sie töten können, während die asynchrone Datenbanktransaktion noch im Gange ist. Lesen Sie diese Seite in der Dokumentation für mehr: https://firebase.google.com/docs/functions/terminate-functions –
@FrankvanPuffelen ... vielen Dank ... immer hilfreich :) – John