Maison >interface Web >js tutoriel >Comment puis-je automatiser la suppression des données datant de plus de deux heures dans Firebase ?

Comment puis-je automatiser la suppression des données datant de plus de deux heures dans Firebase ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-29 21:48:12595parcourir

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

Automatisation du nettoyage des données dans Firebase

Pour supprimer efficacement les données Firebase datant de plus de deux heures, envisagez l'approche suivante :

Limites de Firebase :

Firebase ne propose pas de requêtes avec dynamique des paramètres comme "il y a deux heures". Cependant, il peut exécuter des requêtes pour des valeurs spécifiques, telles que « après un horodatage particulier ».

Suppression basée sur le temps :

Implémentez un extrait de code qui s'exécute périodiquement pour supprimer les données datant de plus de deux heures à ce moment-là.

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

Mise en œuvre Détails :

  • Utilisez child_added au lieu de value et limitToLast(1) pour gérer les suppressions efficacement.
  • Au fur et à mesure que chaque enfant est supprimé, Firebase déclenchera child_added pour le nouveau "dernier " élément jusqu'à ce qu'il n'y ait plus d'éléments après le point de coupure.

Fonctions Cloud pour Firebase :

Si vous souhaitez que ce code s'exécute périodiquement en arrière-plan, vous pouvez utiliser Cloud Functions 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);
  });
});

Remarque :

  • Cette fonction se déclenchera chaque fois que des données sont écrites dans /path/to/items, supprimant uniquement les nœuds enfants qui respectent l'heure critères.
  • Le code est également disponible dans le dépôt de fonctions-échantillons pour votre commodité.

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