我的数据库中有一个具有特定值的行。有一个系统会自动增加该值,该值不是恒定的。
我需要构建一个脚本,每当这个值达到30的倍数时就会提醒用户。
演示:
每次用户收到提醒时,我都会将事件记录在数据库中,以获取数据历史记录。
此脚本将在Node JS服务器内运行,该服务器每天至少运行一次。
我的代码:
function validateValue(id, interval) {
//Callback that returns me the present value
retreiveValue(id, function(value) {
//Checks if the value is multiple of 30
if (value % interval == 0 ) {
//Retreive the lastest alert to check if the event was already sent
retreiveLastValue(id, function(configs) {
if (value == configs.value && interval == configs.interval) {
console.log("already sent");
}else{
console.log("send alert");
}
});
}
});
}
但在这种情况下,如果值为30或60,脚本将仅发送警报。由于服务器将每天运行一次,我想找到一种方法来检查数字是否通过了屏障试。
演示:
如何构建可以防止此问题的脚本?
谢谢。
答案 0 :(得分:0)
您可以使用除法value
来检查interval
是value % interval
的确切倍数,而不是检查0
的确切倍数是Math.floor( value / interval ) = n
。该值至少为n * interval
。此n
也是需要发送的警报数量,因此,只要n
大于发送的警报数(即另一个已发送警报数),就会跟踪警报并发出新警报被越过了。
var alertCount = 0;
function validateValue(id, interval) {
//Callback that returns me the present value
retreiveValue(id, function(value) {
if( Math.floor( value / interval) > alertCount ){
sendAlert( value );
alertCount += 1;
}
});
}