【问题标题】:NodeJs - setTimeout() for delete user subscription from dbNodeJs - setTimeout() 用于从数据库中删除用户订阅
【发布时间】:2020-06-15 22:42:05
【问题描述】:

我是 nodeJs 的新手。 我正在开发一个平台,用户可以在其中订阅试用版或专业版。我想知道在订阅到期日期之后是否可以使用 setTimeout 方法从数据库中删除用户信息。如果这是不可能的,有没有办法做到这一点或允许您管理订阅的库?

【问题讨论】:

    标签: node.js mongodb express


    【解决方案1】:

    setTimeout 不可靠,服务可以上升或下降,你的请求应该是持久的。

    您需要一个基于 DB 的离线作业管理器,例如 agenda 或类似的。

    这里也广泛讨论了这个问题:I need a Nodejs scheduler that allows for tasks at different intervals

    【讨论】:

      【解决方案2】:

      你可以,但这不是一个好方法,因为你在内存上管理它,如果你的服务器重新启动,你将失去这个订阅状态。

      为什么不直接将订阅日期保存在数据库中,并在用户登录时验证订阅日期与现在的差异是否大于免费订阅期限?

      【讨论】:

      • 是的。谢谢。我不考虑。我会试试这个方法。谢谢
      【解决方案3】:

      解决您的问题的方法是运行CRON 作业。这可能每 24 小时运行一次以检查用户的订阅,如果试用期已过期,则删除该用户。您可以使用cron npm 包来实现这一点。

      【讨论】:

        【解决方案4】:

        其他解决方案:创建TTL Index。 Mongodb 会定期检查并删除过期用户。

        您不需要编写任何额外的代码/逻辑。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-06-07
          • 1970-01-01
          相关资源
          最近更新 更多