Ich habe die folgende Cloud-Funktion, die sehr gut funktioniert. Es wartet auf ein Update in der Echtzeitdatenbank und aktualisiert Firestore entsprechend.Unbehandelte Ablehnung in Google Cloud-Funktionen
Alles ist in Ordnung, außer wenn mein Benutzer noch nicht meine Firestore-Datenbank existiert.
Hier, wo ich mit Unhandled rejection
umgehen muss, sehe ich im Google Cloud Functions-Protokoll.
So siehe unten, in der verkürzten Version der Funktion, für meine db.collection("users").where("email", "==", email).get()
, wie Sie die Funktion stoppen, um vorwärts zu bewegen und den Absturz zu verhindern.
exports.updateActivities = functions.database.ref("delegates/{userId}/activities").onWrite((event) => {
//Here I set all the needed variable
return rtdb.ref(`delegates/${userId}/email`).once("value", snapshot => {
//Here I'm fine, email is always present.
})
.then(() => {
db.collection("users").where("email", "==", email).get()
//This is where I need to handle when there is not matching value, to stop moving forward.
.then(querySnapshot => {
querySnapshot.forEach(val => {
console.log("Found match in FireStore " + val.id);
firestoreId = val.id;
})
})
.then(() => {
//Here I start my update on Firestore
});
})
});
Danke, so mit dem '.catch (error => {console.error (Fehler); return }) 'Ich stoppe auch die Funktion, um fortzufahren, oder die' Rückkehr' ist hier optional? – Benoit
Sie sollten * immer * eine Zusage von einer Funktion zurückgeben, die asynchrone Arbeit ausführt. –