Firebase云功能 - 删除时间戳字段超过一个月且每天运行的条目

时间:2018-06-11 19:01:14

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

这是一个二合一的问题。

第1部分: 我将数据存储在Firestore中,我的一个字段是'end_date'时间戳字段。 如何编写云功能,以便在此字段超过一个月时删除记录?

第2部分: 我怎样才能让它每天都运行?

1 个答案:

答案 0 :(得分:3)

通过结合以下技术,您可以相对轻松地解决这个问题及相关问题:

Nodejs,firebase-admin SDK和async / await模式。这不是一个完整的解决方案,只是为了给你一个想法:

firestore查询,以获取过去'end_date'所在的所有文档。像这样的东西(在Nodejs中)。

let now = new Date(); // Maybe use luxon or moment
now.setMonth(d.getMonth() - 1);
const query = firestore.collection('items')
  .where('end_date', '<=', now)
const snapshots = await query.get();
// Snapshots now contains the documents to delete

firestore batch ,使用它来创建批处理操作,例如删除。您最多可以批量执行500次操作:

const batch = firestore.batch();
snapshots.forEach(v => batch.delete(v.ref));
await batch.commit();

现在你只需要一种方法来每天运行一次。好吧,在创建HTTPS firebase function之后,你可以使用像这个伟大的免费cron-job服务cron-job.org之类的东西来每天调用你的函数。

请记住,如果您使用cron-job.org安排工作,请考虑身份验证。

如果您需要任何其他帮助,请与我们联系。