所以,我的Meteor应用让用户注册14天的免费试用。当他们注册时,他们的DB文档会更新为'Free Trial: 活动"。
我想让该文档在14天后自动更新为'Free Trial: 从注册日期起14天后,我想让文档自动更新为'Free Trial: Expired',但我想知道SetTimeout()的14天延迟(以ms为单位)是否合适?
不,这不是解决你问题的正确方法。
你需要在他们的账户中存储一个试用期满的日期,并在登录时检查他们的试用期是否已经过期(即今天的日期是否为过期日期),如果已经过期,则显示一条消息。
你会希望在你的数据库里有一个字段,叫做类似于 expiresAt
设置为14天后的日期时间。每当你通过查询账户进行身份验证时,你就会想运行这样的逻辑。
SELECT
# yadda yadda yadda
FROM
accounts
WHERE
expiresAt > NOW()
问题是这样的 setTimeout
是,它是一个运行时结构。所以这意味着它在运行时占用处理器和内存空间。除此之外,你还会失去 setTimeout
进程,如果它所运行的机器断电或崩溃,你将无法在多台机器或进程上复制该功能。