这是一个二合一的问题。
第1部分: 我将数据存储在Firestore中,我的一个字段是'end_date'时间戳字段。 如何编写云功能,以便在此字段超过一个月时删除记录?
第2部分: 我怎样才能让它每天都运行?
答案 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安排工作,请考虑身份验证。
如果您需要任何其他帮助,请与我们联系。