Maison >interface Web >js tutoriel >Comment supprimer les données Firebase datant de plus de deux heures ?

Comment supprimer les données Firebase datant de plus de deux heures ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-07 22:06:15808parcourir

How to Delete Firebase Data Older Than Two Hours?

Supprimer les données Firebase datant de plus de 2 heures

La question :

Pour éviter la latence et optimiser les performances de la base de données, il est important de supprimer efficacement les données obsolètes. Cette question cherche un moyen de supprimer les données Firebase datant de plus de deux heures.

La solution :

Firebase n'autorise pas les requêtes avec des paramètres dynamiques tels que "il y a deux heures ". Au lieu de cela, nous pouvons exécuter une requête pour un horodatage spécifique, par exemple « après une date et une heure passées spécifiques ».

Pour supprimer les anciennes données, considérez l'extrait de code suivant :

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();
});

Voici comment cela fonctionne :

  • Utilisez child_added au lieu de value.
  • Définissez limitToLast(1) pour garantir que seul le dernier élément après la date limite est supprimé.
  • Lorsque les éléments sont supprimés, Firebase déclenche child_added pour le "dernier" élément suivant jusqu'à ce que tous les éléments obsolètes soient supprimés.

Pour les fonctions Cloud pour Firebase :

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);
  });
});

Cette fonction s'exécute chaque fois que des données sont modifié sous /path/to/items, supprimant les nœuds enfants uniquement lorsqu'ils sont en cours de modification.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn