如何跟踪到期情况

时间:2016-09-27 06:14:21

标签: javascript node.js backend

让我举一个例子来澄清我的问题:

  • 我们有一个节点应用程序,在这种情况下,我们有客户订阅。默认情况下,我们订阅一个新客户进行试用(比如试用30天),在db记录中会有一个试用期日。
  • 试用期结束后,我们希望将客户转移到免费计划

可以看出,后端需要在试用期满时识别试用期结束。如何跟踪到期日期?通常的做法是什么?

好吧,对于我可以回答的最后一个问题,也许一般的方法是在每次登录之前检查过期并相应地采取行动。另一种可能性就是让一个类似于工作的人在到期结束的确切时间内发生。

哪个更好以及如何处理类似cron的解决方案?

有什么建议吗?

2 个答案:

答案 0 :(得分:1)

在大多数情况下,cron作业更可取。有两个原因:

  • 您通常希望其他操作与过期相关联 - 例如向用户发送他们的帐户已过期的电子邮件 - 当他们到达并登录时没有任何意义
  • 您希望您的数据库记录最新用于其他目的,例如提取统计信息或结算运行。

澄清上面的第二项:假设您要发送一封电子邮件,宣布更改用户帐户(例如隐私政策更新),但您不想将该电子邮件发送给已过期的用户帐户。从数据库中选择所有活动帐户要容易得多,而不是需要检查到期日期。您可能会说,"很容易添加到我的代码",但是:如果您有另一个使用此数据库的系统,或者通过RPC查询系统的系统会发生什么,或者也许你只是在shell中运行并运行一些原始SQL?您突然需要在许多可能的系统(或代码库中的位置)中复制该到期检查代码,并且检查active==True要简单得多。

有关工作的信息,我还有另一篇来自类似问题的简短stack overflow post

答案 1 :(得分:0)

最好的方法是在登录期间检查过期时间。这样做的好处是DB上的开销更少,并且不需要外部脚本,触发器,这可以确保更好的可维护代码。