2017-05-15 69 views
1

我正在研究允许将数据发布到Firebase的社交iOS应用程序。不过,我想清除所有超过1小时的帖子。 Instagram故事是一个很好的例子,在24小时后图像被删除。我在想的方法包括在endTime超过当前时间后提交startTime和endTime时间戳并删除数据客户端。另一方面,这将需要24/7用户的活动,因为如果用户的数据不经常打开应用程序,则永远不会删除用户的数据。我相信我需要一个服务器来处理这个问题。 我想请教你如何实现这个服务器端的建议和帮助 - 因为我相信这是唯一可能的方式。定期从Firebase中删除数据

+1

你会想看看云功能的火力地堡,它允许您运行在谷歌的服务器的JavaScript代码片段:https://firebase.google.com/docs/functions/use-cases#perform_database_sanitization_and_maintenance 。还有看看我对这个问题的答案,看看如何查询删除的数据:http://stackoverflow.com/questions/32004582/delete-firebase-data-older-than-2-hours –

+0

我已经创建Cloud Functions中的一个函数,就像你发给我的答案一样。我的问题是如何执行该功能,即何时调用该函数? 我阅读了文档并看到了一个onWrite事件。我是否需要使用该事件,或者有没有办法定期执行该功能以删除1小时以前的数据? –

回答

4

解决方案1 ​​ - 云功能

登录火力点,然后选择您的应用程序,你现在将是应用概览页面上。选择云功能项目。这将允许您基于触发器执行一些javaScript,有许多不同类型的触发器,例如数据库触发器或身份验证触发器。在这种情况下,您希望触发器基于时间。

也就是说这一个:

enter image description here

火力地堡阐释了云功能比我好的人以下:

你编写和部署一个功能之后,谷歌的服务器开始管理功能立即监听事件并在触发时运行该功能。随着负载的增加或减少,Google通过快速扩展运行您的功能所需的虚拟服务器实例的数量来做出响应。

函数

的显影剂为一个新的函数写入代码,选择事件提供者(如实时数据库),并限定在其下的功能应该执行条件的生命周期。 开发人员部署该功能,Firebase将其连接到选定的事件提供程序。 当事件提供程序生成与函数条件匹配的事件时,将调用该代码。 如果该函数忙于处理许多事件,Google会创建更多实例来更快地处理工作。如果该功能空闲,则会清除实例。 当开发人员通过部署更新的代码更新函数时,旧版本的所有实例都将被清理并由新实例替换。 当开发人员删除该函数时,将清除所有实例,并删除该函数与事件提供程序之间的连接。

来源:https://firebase.google.com/docs/functions/

解决方案2 - 服务器+ Cron作业(我的偏好)

  1. 在购买包月便宜的服务器(不需要任何花哨的应该是一个一个月几美元),将努力找到一个允许Cron工作的免费项目。

  2. 编写一个连接到firebase数据库的脚本并删除超过一个小时的所有帖子。

  3. 在您的服务器仪表板/控制面板上创建一个新的Cron作业,计划每小时运行一次并将其指向您刚写入的脚本。