【问题标题】:NodeJS and Firebase/Firestore track time and update automaticallyNodeJS 和 Firebase/Firestore 跟踪时间并自动更新
【发布时间】:2021-08-06 16:19:13
【问题描述】:

所以我要创建的功能是用户给我一个日期,例如 2020 年 6 月 28 日和 2020 年 7 月 28 日我会:

  1. 向他们发送通知
  2. 将我存储的日期从 2020 年 6 月 28 日更改为 2020 年 7 月 28 日
  3. 开始跟踪 2020 年 8 月 28 日以重复 1 和 2。

我想自动执行此操作。我可以发出通知,但我被困在如何每天自动跟踪日期以比较今天的日期和下个月 28 日的结束日期并进行更改。在用户输入结束日期后,firebase 或 nodejs 是否有一些功能/包可以在没有任何外部事件的情况下在后台执行此操作?

现在我可以从 firestore 获取日期并将其与今天的日期进行比较,但只有当我有一个事件时,比如我去我的个人资料页面时。我还可以使用 dateJS 更新下个月的日期。但如果我不去我的页面,它不会触发该功能。我想让它自动化并将其存储在不需要用户交互来触发它但会自动发生的地方。

注意:日期可能会根据用户输入而有所不同,因此它不是固定日期。我正在为我的项目使用 NodeJS 和 firebase。 任何帮助将不胜感激。谢谢!

【问题讨论】:

  • Firestore 并没有单独的功能,但是,您可以使用 Cloud Functions 和 Cloud Tasks 来做到这一点,这里有一个 blog post 详细说明了如何做到这一点。如果这回答了您的问题,请告诉我。

标签: node.js firebase google-cloud-firestore


【解决方案1】:

您可以使用 pubsub 创建一个每 24 小时运行一次的云功能。然后,您可以使用类似的方法获取当前日期

const currentDate = new Date();

然后,您可以通过检查 Firestore 中的时间戳是否介于现在和未来 24 小时之间来检查那一天是否是今天。我建议为此使用时刻依赖。你可以这样做:

const currentDate = new Date();
const tomorrow = moment(currentDate).add(24, 'hours');
if(yourDate > currentDate && yourDate < tomorrow){
    // send notification

    // update to next month
    const nextMonth = moment(currentDate).add(1, 'month');
    db.collection(path).doc(docId).update({
        yourDate: nextMonth,
    });
}

请注意,这是伪代码,我尚未对其进行全面测试,但我过去曾使用过类似的技术。我认为这应该对你有用

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-11-25
    • 2019-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多