【问题标题】:Sailsjs table needs to be updated automatically without using any cronSailsjs 表需要在不使用任何 cron 的情况下自动更新
【发布时间】:2016-12-25 20:04:54
【问题描述】:
我正在使用 SAILS JS 并且正在使用 mysql 适配器。我有一个名为 User 的模型,具有以下字段 ID、USERNAME、EMAIL、ACTIVE_STATUS 和 CREATED_DATE。
默认情况下,active_status 设置为 0。我想在 created_date + 3 days 等于 Today 时更新状态为 1。
请提出任何可能的方法来做到这一点。
【问题讨论】:
标签:
mysql
node.js
sails.js
waterline
sails.io.js
【解决方案1】:
希望你可以使用MySQL的事件调度器
通过以下方式激活它:SET GLOBAL event_scheduler = ON;
创建事件语法:
CREATE EVENT `event_name`
ON SCHEDULE schedule
[ON COMPLETION [NOT] PRESERVE]
[ENABLE | DISABLE | DISABLE ON SLAVE]
DO BEGIN
-- event body
END;
可以为时间表分配各种设置,例如
- 在特定日期/时间运行一次:
AT 'YYYY-MM-DD HH:MM.SS'
例如AT ‘2011-06-01 02:00.00’
- 经过特定时间后运行一次:
AT CURRENT_TIMESTAMP + INTERVAL n [HOUR|MONTH|WEEK|DAY|MINUTE]
例如AT CURRENT_TIMESTAMP + INTERVAL 1 天
- 永远以特定的时间间隔运行:
每 n [小时|月|周|日|分钟]
例如每 1 天
- 在特定时间段内以特定间隔运行:
每 n [HOUR|MONTH|WEEK|DAY|MINUTE] 开始日期结束日期
例如每 1 天开始 CURRENT_TIMESTAMP + INTERVAL 1 WEEK ENDS ‘2012-01-01 00:00.00’
例子:
SET GLOBAL event_scheduler = ON; -- enable event scheduler.
SELECT @@event_scheduler; -- check whether event scheduler is ON/OFF
CREATE EVENT e_store_ts -- create your event
ON SCHEDULE
EVERY 24 HOURS -- run every 24 hours
DO
UPDATE myschema.users set active_status = 1
参考:http://dev.mysql.com/doc/refman/5.5/en/create-event.html