云功能-可变时间后删除Firestore文档并通知用户

时间:2018-10-22 09:56:18

标签: typescript google-cloud-firestore google-cloud-functions

我看到了类似的问题,即根据此处的写入触发器,在一定时间后删除Firebase Realtime Database数据

Delete firebase data older than 2 hours

如何在Firebase Firestore中实现这一目标?


信息:

我的Firestore布局为:
主要收藏
-文件1
------子集合
---------- Doc xyz1
---------- Doc xyz2
-文件2
------子集合
---------- Doc abc1
----------博士tyu1
---------- Doc tyu2

每个用户可能有多个子文档(xyz1,xyz2),他们可以更改将其加载到哪个主文档中。这两个集合都是已知的并且不会更改,但是主要文档和子文档都是可变的。该功能应等待一段可变的时间(10-120分钟),然后再删除特定的子文档。完成后,已删除子文档的用户/所有者需要通知。

编辑:我能找到的最好的办法是,我没有可以使用的Firestore生存时间(TTL)文档,并且建议进行的定期检查/清理对我不起作用具体用例。

编辑2-其他详细信息-::每个用户将私下保存其唯一的文档(abc1)。他们将自行决定选择一个主要文档(上述文档2),并将其文档提交给其子集合。
在当前时间点,当用户私人文档成功提交给公共子集合时,aysnc任务将具有倒数计时器,计时器完成后将删除用户上述文档。这很好用,但是当用户离开应用程序或计时器到时没有互联网连接时,不会删除文档。

这使我想到了最初的问题,以为我可以在计时器倒计时后利用Cloud Functions执行删除操作。

1 个答案:

答案 0 :(得分:0)

Firestore没有TTL机制。而且Cloud Functions没有调度机制。您将不得不寻找另一种安排某些工作的方法,这些工作将清除旧文档。

您有两种选择可以调查:

  1. 您可以使用一些cron-style scheduling mechanism来ping函数以定期查询和删除旧文档。这意味着它们可能无法在您想要的时间准确删除。
  2. 使用Cloud Tasks安排以后的工作。当前,该任务将需要在App Engine引擎实例上运行,并且可能会通过您在项目中创建的另一个函数来调用Cloud Functions。

这两种设置和维护都很简单。