Heim >Web-Frontend >js-Tutorial >Wie kann ich das Löschen von Daten, die älter als zwei Stunden sind, in Firebase automatisieren?

Wie kann ich das Löschen von Daten, die älter als zwei Stunden sind, in Firebase automatisieren?

Patricia Arquette
Patricia ArquetteOriginal
2024-11-29 21:48:12547Durchsuche

How Can I Automate the Deletion of Data Older Than Two Hours in Firebase?

Automatisierung der Datenbereinigung in Firebase

Um Firebase-Daten, die älter als zwei Stunden sind, effizient zu löschen, sollten Sie den folgenden Ansatz in Betracht ziehen:

Firebase-Einschränkungen:

Firebase bietet keine Abfragen mit dynamischen Parametern wie „vor zwei Stunden.“ Es kann jedoch Abfragen für bestimmte Werte ausführen, z. B. „nach einem bestimmten Zeitstempel“.

Zeitbasiertes Löschen:

Implementieren Sie ein Code-Snippet, das regelmäßig ausgeführt wird Daten löschen, die zu diesem Zeitpunkt älter als zwei Stunden sind.

var ref = firebase.database().ref('/path/to/items/');
var now = Date.now();
var cutoff = now - 2 * 60 * 60 * 1000;
var old = ref.orderByChild('timestamp').endAt(cutoff).limitToLast(1);

var listener = old.on('child_added', function(snapshot) {
    snapshot.ref.remove();
});

Implementierung Details:

  • Verwenden Sie child_added anstelle von value und limitToLast(1), um Löschvorgänge effizient durchzuführen.
  • Wenn jedes untergeordnete Element gelöscht wird, löst Firebase child_added für das neue „last“ aus " Element, bis nach dem Cutoff-Punkt keine Elemente mehr vorhanden sind.

Cloud-Funktionen für Firebase:

Wenn Sie möchten, dass dieser Code regelmäßig im Hintergrund ausgeführt wird, können Sie Cloud Functions für Firebase verwenden:

exports.deleteOldItems = functions.database.ref('/path/to/items/{pushId}')
.onWrite((change, context) => {
  var ref = change.after.ref.parent;
  var now = Date.now();
  var cutoff = now - 2 * 60 * 60 * 1000;
  var oldItemsQuery = ref.orderByChild('timestamp').endAt(cutoff);

  return oldItemsQuery.once('value', function(snapshot) {
    var updates = {};
    snapshot.forEach(function(child) {
      updates[child.key] = null;
    });
    return ref.update(updates);
  });
});

Hinweis:

  • Diese Funktion wird immer dann ausgelöst, wenn Daten nach /path/to/items geschrieben werden, und löscht nur untergeordnete Knoten, die die Zeit einhalten Kriterien.
  • Der Code ist zur Vereinfachung auch im Functions-Samples-Repo verfügbar.

Das obige ist der detaillierte Inhalt vonWie kann ich das Löschen von Daten, die älter als zwei Stunden sind, in Firebase automatisieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn