SetTimeout()的天数是不是一种不好的做法?

问题描述 投票:1回答:1

所以,我的Meteor应用让用户注册14天的免费试用。当他们注册时,他们的DB文档会更新为'Free Trial: 活动"。

我想让该文档在14天后自动更新为'Free Trial: 从注册日期起14天后,我想让文档自动更新为'Free Trial: Expired',但我想知道SetTimeout()的14天延迟(以ms为单位)是否合适?

javascript node.js meteor
1个回答
3
投票

不,这不是解决你问题的正确方法。

你需要在他们的账户中存储一个试用期满的日期,并在登录时检查他们的试用期是否已经过期(即今天的日期是否为过期日期),如果已经过期,则显示一条消息。


2
投票

你会希望在你的数据库里有一个字段,叫做类似于 expiresAt 设置为14天后的日期时间。每当你通过查询账户进行身份验证时,你就会想运行这样的逻辑。

SELECT
  # yadda yadda yadda
FROM
  accounts
WHERE
  expiresAt > NOW()

问题是这样的 setTimeout 是,它是一个运行时结构。所以这意味着它在运行时占用处理器和内存空间。除此之外,你还会失去 setTimeout 进程,如果它所运行的机器断电或崩溃,你将无法在多台机器或进程上复制该功能。

© www.soinside.com 2019 - 2024. All rights reserved.