0

Ich möchte eine Funktion haben, die ein 10 Stunden altes Kind löscht. Ich habe diesen Code bisher, aber, wenn ich dies zu Firebase Cloud-Funktionen bereitstellen, entfernt es sofort alle Daten aus der Datenbank. Ich bin mir nicht sicher, was ich falsch mache. Bitte helfen Sie!Delete Firebase Child nach 10 Stunden

exports.deleteOldItems = functions.database.ref('Rollerbanken/{pushId}') 
.onWrite(event => { 
    var ref = event.data.ref.parent; // reference to the items 
    var now = Date.now(); 
    var cutoff = now - 10 * 60 * 60 * 1000; 
    var oldItemsQuery = ref.orderByChild('timestamp').endAt(cutoff); 
    return oldItemsQuery.once('value', function(snapshot) { 
    // create a map with all children that need to be removed 
    var updates = {}; 
    snapshot.forEach(function(child) { 
     updates[child.key] = null 
    }); 
    // execute all updates in one go and return the result to end the function 
    return ref.update(updates); 
    }); 
}); 

My Firebase Datenbankstruktur:

{ 
    "Rollerbanken" : { 
    "-Ku_Ywh8wElDdwNqa0KW" : { 
     "Extrainformatie" : "", 
     "Latitude" : "51.8306880305073", 
     "Longitude" : "5.90483402833892", 
     "Staater" : "Staat er nog steeds", 
     "Staaternietmeer" : "", 
     "Stad" : "Nijmegen", 
     "Tijd" : "19:50", 
     "TijdControle" : "19:50", 
     "TijdControleniet" : "", 
     "TypeControle" : "Rollerbank", 
     "TypeControle2" : "Rollerbank", 
     "postKey" : "-Ku_Ywh8wElDdwNqa0KW", 
     "timestamp" : 1506016223000 
     } 
     } 
    } 
+1

Können Sie uns ein Beispiel für die bei 'Rollerbanken/{pushId}' gespeicherten Artikel zeigen? –

+0

Natürlich habe ich es bearbeitet! – Danjhi

Antwort

0

Sie haben ref.orderByChild('timestamp') in Ihrem Code, aber es gibt keine timestamp Feld in Ihren Daten. Dies wird interpretiert als mit einem null Zeitstempel, der tatsächlich die höchste Priorität in der ordering von Firebase verhängt hat. Als Ergebnis werden alle Ihre Datenknoten vor dem angegebenen cutoff geordnet und entfernt. Um dieses Problem zu lösen, müssen Sie das Feld timestamp Ihrem Schema hinzufügen.

+0

Ich habe jetzt Timestamp in meiner Struktur mit: "timestamp": ServerValue.timestamp() aber es funktioniert immer noch nicht! – Danjhi

+0

ich das Logbuch es sagt, dass es finishend 'ok'. Also verstehe ich nicht was passiert? – Danjhi