Ich möchte eine Firebase-Cloud-Funktion schreiben, die von einem Firestore-Write-Ereignis ausgelöst wird. Innerhalb der Funktion muss ich wissen, ob der Schreibvorgang tatsächlich eine Funktion zum Erstellen, Aktualisieren oder Löschen ist. Die Logik ist etwas anders, aber ich möchte nicht drei verschiedene Event-Handler kopieren und einfügen. Wie kann ich feststellen, um welchen Ereignistyp es sich handelt?Firestore + Cloud-Funktion: So erkennen Sie, ob es sich um ein Ereignis zum Erstellen, Aktualisieren oder Löschen handelt
Die Cloud-Dokumentation liest sich sehr verwirrend für mich.
Die Dokumentation für Ereignis besagt, dass im Falle von FireStore das Ereignis tatsächlich ein DeltaDocumentSnapshot ist.
https://firebase.google.com/docs/reference/functions/functions.Event
Die Dokumentation für DeltaDocumentSnapshot schlägt vor, dass die Klasse keine Informationen über das Ereignis selbst hat (zB Anzeige von erstellen, aktualisieren oder löschen), aber nur das Zieldokument:
https://firebase.google.com/docs/reference/functions/functions.firestore.DeltaDocumentSnapshot
Ich habe Beispiele gefunden, bei denen der Autor das Erstellen/Aktualisieren/Löschen abzuleiten scheint, indem er überprüft, ob das aktuelle oder vorherige Dokument existiert. Ich habe das versucht, aber ich bekomme einen Fehler.
https://github.com/firebase/functions-samples/blob/master/child-count/functions/index.js#L30
Hier ist, was ich versucht habe:
exports.updateLikeCount = functions.firestore
.document('likes/{likeId}').onWrite((event) => {
if (event.data.data().exists()) {
// Looks like the document still exists. It must be an update or create.
}
if (event.data.previous.data().exists()) {
// Looks like the document existed before. It must be an update or delete.
}
Dieser Code schlägt mit diesem Fehler:
TypeError: event.data.exists is not a function
Der Code, den Sie verknüpfen vom 'Kind-count' verwendet' event.data.exists() '. Sie haben dort ein zusätzliches 'data()' hinzugefügt, was nicht funktioniert. –