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

如何在 Firebase 中自动删除超过两小时的数据?

Patricia Arquette
发布: 2024-11-29 21:48:12
原创
593 人浏览过

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

在 Firebase 中自动进行数据清理

要有效删除超过两小时的 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_added " 项目,直到截止点之后没有更多项目。

云函数对于 Firebase:

如果您希望此代码在后台定期运行,您可以使用 Cloud Functions for 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);
  });
});
登录后复制

注意:

  • 每当有数据写入 /path/to/items 时就会触发该函数,只删除满足条件的子节点时间标准。
  • 为了方便起见,代码也可以在函数示例存储库中找到。

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

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板