【问题标题】:Firebase Cloud Functions - Delete Entries where timestamp field is over a month old and run dailyFirebase Cloud Functions - 删除时间戳字段超过一个月并每天运行的条目
【发布时间】:2018-06-11 19:01:14
【问题描述】:

这是一个二合一的问题。

第 1 部分: 我在 Firestore 中存储数据,其中一个字段是“end_date”时间戳字段。 怎么写一个云函数,当这个字段过去一个多月的时候,删除记录?

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

【问题讨论】:

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


    【解决方案1】:

    您可以通过结合以下技术来解决这个问题以及相关问题,相对容易:

    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 批处理,使用它来创建批处理操作,例如删除。您最多可以一次执行 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 来安排您的工作,请考虑身份验证。

    如果您需要任何其他帮助,请告诉我。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-22
      • 2018-02-02
      • 2018-01-03
      • 2021-06-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多