首页 >web前端 >js教程 >如何删除超过两小时的 Firebase 数据?

如何删除超过两小时的 Firebase 数据?

Susan Sarandon
Susan Sarandon原创
2024-12-07 22:06:15808浏览

How to Delete Firebase Data Older Than Two Hours?

删除超过 2 小时的 Firebase 数据

问题:

为了避免延迟和优化数据库性能,有效删除过时数据非常重要。此问题寻求一种方法来删除超过两个小时的 Firebase 数据。

解决方案:

Firebase 不允许使用“两小时前”等动态参数进行查询”。相反,我们可以对特定时间戳执行查询,例如“在过去的特定日期和时间之后”。

要删除旧数据,请考虑以下代码片段:

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

它的工作原理如下:

  • 使用 child_added 而不是 value。
  • 设置limitToLast(1) 以确保仅删除截止后的最后一个项目。
  • 删除项目时,Firebase 会触发下一个“最后”项目的 child_additional,直到删除所有过时的项目。

对于 Firebase 的 Cloud Functions:

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

此函数每当 /path/to/items 下的数据被修改时执行,仅在修改时删除子节点。

以上是如何删除超过两小时的 Firebase 数据?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn