删除超过 2 小时的 Firebase 数据

2023-11-27

我想删除超过两个小时的数据。目前,在客户端,我循环遍历所有数据并对过时的数据运行删除。当我这样做时,db.on('value')每次删除某些内容时都会调用该函数。另外,只有当客户端连接时才会删除内容,如果两个客户端同时连接会发生什么?

我在哪里可以设置删除旧数据的功能?我在 JavaScript 创建的每个对象内都有一个时间戳Date.now().


Firebase 不支持使用动态参数的查询,例如“两小时前”。它can但是,执行特定值的查询,例如“2015 年 8 月 14 日上午 7:27:32 之后”。

这意味着您可以定期运行一段代码来清理超过 2 小时的项目当时:

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, and I limitToLast(1)。当我删除每个子项时,Firebase 将触发child_added对于新的“最后”项目,直到截止点之后不再有项目。

Update:如果您想在 Cloud Functions for Firebase 中运行此代码:

exports.deleteOldItems = functions.database.ref('/path/to/items/{pushId}')
.onWrite((change, context) => {
  var ref = change.after.ref.parent; // reference to the items
  var now = Date.now();
  var cutoff = now - 2 * 60 * 60 * 1000;
  var oldItemsQuery = ref.orderByChild('timestamp').endAt(cutoff);
  return oldItemsQuery.once('value', function(snapshot) {
    // create a map with all children that need to be removed
    var updates = {};
    snapshot.forEach(function(child) {
      updates[child.key] = null
    });
    // execute all updates in one go and return the result to end the function
    return ref.update(updates);
  });
});

每当数据写入时,该函数就会触发/path/to/items,所以只有在修改数据时才会删除子节点。

此代码现在也可以在functions-samples repo.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

删除超过 2 小时的 Firebase 数据 的相关文章

  • ExtJs4 Json TreeStore?

    我正在将 ExtJs3 应用程序迁移到 ExtJs4 在 ExtJs3 中 我有一个树网格 它有一个加载器来加载树数据 如下所示 loader new Ext tree TreeLoader dataUrl Department Depar
  • React 和 Leaflet 结合的好方法

    我正在开发一个将 React 和 Leaflet 结合起来的项目 但我必须说我在语义方面遇到了一些困难 由于大部分内容都是由 Leaflet 直接管理的 我不知道将 Leaflet 映射实例添加为 React 组件中的状态是否有意义 当涉及
  • 如何在 guildMemberAdd 中使用awaitReactions

    当用户连接到我的服务器时 我向他们发送消息 并且我想通过单击反应来继续授权 我怎样才能创建这个 我正在使用以下代码 robot on guildMemberAdd gMembAdd gt gMembAdd send Hi gMembAdd
  • 当列表包含图像时,React Native FlatList 感觉很慢

    我为 avater 使用 64x64 图像 它的尺寸非常小 通过我的应用程序 滚动时帧率下降至 25 35 fps 如何优化 flatList 图像
  • 如何获取 CSS 旋转元素的实际(非原始)高度

    我需要获取几个不同元素的实际高度 为了精确的自定义工具提示定位 并且其中一些元素 不是全部 被旋转 elem outerHeight 返回原始高度 而不是实际显示的高度 这是一个非常简单的例子 http jsfiddle net NPC42
  • 使用西里尔字母的正则表达式

    我有一个用于文本区域字段中字数统计的 jQuery 函数 此外 它排除所有用 三重括号 封闭的单词 它对于拉丁字符效果很好 但对于西里尔字母句子有问题 我认为错误部分与正则表达式有关 field val replace g match b
  • JavaScript 函数参数和范围

    我用下面列出的代码做了一些测试 function foo x alert y var y I am defined outside foo definition foo 上面的代码给了我一个警告 我是在 foo 定义之外定义的 然后另一个测
  • 解密Javascript源代码[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我已经编写了一段 JavaScrip
  • 不用AJAX,前台同步拖放文件上传?

    我有一个定期的网站
  • 如何在 ES6 类中使用静态变量?

    我正在尝试在 es6 中使用静态变量 我想声明一个静态变量count in Animal类并增加它 但是 我无法通过声明静态变量static count 0 所以我尝试了另一种方法 class Animal constructor this
  • 如何在 Android 设备(平板电脑和手机)方向更改时获得正确的窗口宽度

    我正在尝试使用 jquery 函数计算 Android 设备方向变化时的窗口宽度 window outerWidth true 此计算给出了两个方向变化的正确宽度iphone and ipad但在安卓中不行 如果我最初以横向模式或纵向模式加
  • 同步通用分析

    新的Universal Analytics重新引入了同步事件跟踪 https developers google com analytics devguides collection analyticsjs method reference
  • 如何在 C# 中通过 JavaScript 回调运行 QUnit 测试并获取测试结果?

    在我的几个项目中 我使用 MVC 模式将代码 关注点 分为 3 层 模型层和控制层都在 C 上运行 因此我使用 MSTest 或 NUnit 等测试框架来验证这些层的功能需求 对于视图层 我使用 QUnit 来测试 JavaScript 文
  • AngularJS:ng-占位符不起作用

    我有以下输入 html 元素 我想根据用户模型中保存的内容更改占位符
  • 内联 YouTube 视频在 iOS 上的 cordova 应用程序中不起作用

    我用 cordova 开发了一个移动应用程序 我确实需要能够播放内联 YouTube 视频 我尝试了一段时间来解决它 我设置了属性playsinline to 1在 YouTube iframe API 中 I put
  • 取消子项上的 ng-swipe-right

    在我的角度应用程序中 主体有一个ng swipe向右和向左切换侧边栏 问题是当我的页面中有一个可滚动的水平 DIV 时 它不会因为身体的滑动而滚动 div class scrollable x long content that overf
  • 谷歌地图通过骨干javascript返回div标签但不显示

    我已经开始使用地理定位 我可以获得坐标等 我想在地图中显示它 但是当我将地图返回到 div 时 什么也没有显示 现在我查看了 div 地图正在返回 但只是不可见 这是有问题的 div 请注意 这似乎只是一个小地图的链接 a style di
  • jQuery 存储类型未定义

    我用了一个jQuery 存储 https ui5 sap com api jQuery sap storage存储数据 oStore jQuery sap storage jQuery sap storage Type local oSto
  • angular-cli:Karma-Webpack 因“没有此类文件或目录”而失败

    我从Tour of Heroes使用标准 Angular systemjs 现在我正在使用angular client它在开发 生产模式下运行顺利 但我无法测试任何东西ng test 以下内容会被吐出 不仅适用于test ts但也为了pol
  • 1° 夏令时 Java 和 JS 表现出不同的行为

    假设巴西利亚 GMT 0300 夏令时于 21 10 2012 00 00 00 此时时钟应提前一小时 Java new Date 2012 1900 9 21 0 0 0 Sun Oct 21 01 00 00 BRST 2012 Chr

随机推荐

  • Spark Dataframe 列与其他列的最后一个字符

    我正在寻找一种方法来从数据帧列中的字符串中获取最后一个字符并将其放入另一列中 我有一个 Spark 数据框 如下所示 animal cat mouse snake 我想要这样的东西 lastchar t e e 现在我可以使用如下 UDF
  • Apache JMeter支持http/2请求吗?

    JMeter 3 2 支持 HTTP2 吗 从版本 4 0 开始 Core JMeter 不支持 HTTP2 但有一个plugin实现它 This plugin可以通过安装JMeter 插件管理器 关于HTTP Client 自2018年1
  • Jquery背景动画

    是否可以将其动画化background color在 jQuery 中 因为它不起作用 something animate background red 1000 来自docs The jQuery用户界面项目扩展了 animate 方法通
  • 使用 Node JS 将记录数组插入 mysql

    我有一组类似的数据 var records Name Id 1 Name Id 2 Name Id 3 Name Id 4 Name Id 5 Name Id 6 记录数组中可能有数千个项目 问题1 我们可以创建一个存储过程来接受mysql
  • 为 Python 2/3 实现 Google 的 DiffMatchPatch API

    我想用 Python 编写一个简单的 diff 应用程序Google 的差异匹配补丁 API 我对 Python 还很陌生 所以我想要一个示例来说明如何使用 Diff Match Patch API 对两个文本段落进行语义比较 我不太确定如
  • Django 注释:想要删除用户 URL,而不是扩展模型。如何?

    我完全理解有关在 Django 中扩展评论应用程序的文档 并且真的想坚持使用自动功能but 在当前的应用程序中 我完全没有必要将 URL 与评论一起提交 Being 微创默认设置 我怎样才能防止这个字段出现在评论表单中 使用 Django
  • 无法使 GWT 应用程序作为 Chrome 打包应用程序工作,可能是由于 CSP

    不断收到 CSP 错误 拒绝执行内联脚本 因为它违反了以下内容安全策略指令 script src self 该问题可能是由于 GWT 生成的 HTML 文件包含内联 JS UPD 更改为清单版本 1 有所帮助 但这是一个临时解决方法 因为
  • Java世界里有类似WPF和MVVM的东西吗?

    Java世界里有类似WPF和MVVM的东西吗 你见过吗eFace eFace 是 Java 中的 XAML WPF 解决方案 第一个版本可用于 现在下载 http www soyatec com eface installation Jav
  • 我可以在 .ld 文件中使用预处理器指令吗

    我可以在 ld 文件中使用预处理器指令吗 我需要使用两组 ld 文件中的一组 并希望让构建引擎使用宏来决定 我可以这样做吗 是的你可以 您需要为链接器脚本手动运行预处理器 如下所示 in your linker script ld out
  • 为什么 Scala 中的柯里化需要多个参数列表?

    假设我有一个有 2 个参数的函数 需要部分应用 我需要将其定义为 def f a Int b Int some code 然后我可以将其部分应用为def fWithA f a 我的问题是 为了柯里化函数 为什么 Scala 要求使用多个参数
  • 相当于Java中C的“_getch()”函数吗?

    我使用 Google Wave 并且我想模拟在您实际按下 Enter 键之前发送消息的功能 Java中是否有相当于C函数的函数 getch 您可以使用 JLine 库的 ConsoleReader readVirtualKey 方法 看ht
  • 当页面重新加载时,JavaScript setTimeout 函数是否停止?

    如果我发起一个setTimeout函数从触发器 当页面重新加载时函数会停止吗 我发起一个setTimeout功能periodic update on the onload我的页面的事件 这是否创建了多个实例periodic update 功
  • C++0x 将不再有概念。意见?这将如何影响你?

    在 2009 年 7 月C 0x 法兰克福会议 决定删除概念来自 C 0x 就我个人而言 我很失望 但我宁愿有一个可实现的 C 0x 也不愿没有 C 0x 他们表示将在稍后添加 您对此决定 问题有何看法 它将如何影响你 就我个人而言 我对删
  • 将文本基线与 div 底部对齐

    我正在尝试调整baseline中的某些文本div到所说的最底部边缘div 这样的角色就像g and j实际上会溢出 div 我似乎只能将文本元素的底部边缘与文本元素的底部边缘对齐div 我尝试过使用vertical align有价值观bas
  • CSS 选择器 * + * 定义?

    css 选择器 到底是什么意思 当您执行检查元素时 您可以在谷歌浏览器的控制台中看到它 根据我的说法 这似乎是对 每个第二个孩子 应用一种风格 但仍然想确定一下 谁能帮我吗 Example margin top 1em 表示 任何具有前一个
  • 通用 UITableView 键盘调整大小算法

    我搜索了很多调整表视图大小以适应键盘显示和隐藏的代码 但我遇到的几乎每一篇文章都假设表视图正在获取其视图控制器的整个视图 我有一个 iPad 应用程序 其中表格视图仅占据屏幕的一部分 在这种情况下调整表视图大小的正确方法是什么 我上面提到的
  • 相机覆盖随方位角和高度变化

    Folks 我正在尝试获取如下图所示的实用程序 基本上 相机显示窗口覆盖了设备屏幕的一部分 并且由曲线或直线连接的点列表作为覆盖层呈现在相机视图上 我知道这可以使用石英来绘制 但这还不到我的问题的一半 真正的问题是 随着方位和标高的变化 叠
  • 如何在Python中读取/dev/random

    我在一本书上读到 dev random就像一个无限文件 但是当我设置以下代码来查看内容是什么样子时 它什么也不打印 with open dev random as f for i in xrange 10 print f readline
  • ValueError:输入 0 与层 conv_1 不兼容:预期 ndim=3,发现 ndim=4

    我正在尝试制作一个变分自动编码器来学习编码 DNA 序列 但遇到了意外错误 我的数据是一组单热数组 我遇到的问题是值错误 它告诉我 我有一个四维输入 而我的输入显然是三维的 100 4008 4 事实上 当我打印出seq层 它说它的形状是
  • 删除超过 2 小时的 Firebase 数据

    我想删除超过两个小时的数据 目前 在客户端 我循环遍历所有数据并对过时的数据运行删除 当我这样做时 db on value 每次删除某些内容时都会调用该函数 另外 只有当客户端连接时才会删除内容 如果两个客户端同时连接会发生什么 我在哪里可