데이터베이스에 특정 값이있는 행이 있습니다. 값을 자동으로 inscrements하는 시스템이 있습니다. 값은 일정하지 않습니다.숫자가 30의 배수이면 경고 사용자
는 그리고 나는 그것이
(30)
의 다수의 때마다이 값을 사용자에게 알려주는 스크립트를 구축 할 필요가 데모 :- 값이 30 -> 경고
- 값이 45 - > 값이 60 인 경우
- 을 경고하지 마십시오 - 경고 매번 사용자가 경고를 수신
> 데이터를 기록하기 위해 데이터베이스에 이벤트를 기록합니다.
이 스크립트는 적어도 하루에 한 번 실행되는 노드 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입니다 그리고 서버가 하루에 한 번 실행하기 때문에, 내가 좋아하면이 경우, 스크립트는 경고를 보낼 것입니다 번호가 장벽을 다시 통과했는지 확인하는 방법을 찾아보십시오.데모 : - 값이 31 인 경우> 30
- > 경고하지 마십시오
이 문제를 방지하는 스크립트를 어떻게 만들 수 있습니까?
감사합니다. 대신 value
이 interval
의 정확한 배수, 즉 모듈 value % interval
당신은 값이 최소한 n * interval
을인지 확인합니다 부문 Math.floor(value/interval) = n
를 사용할 수 0
인 경우 검사
난 ... 당신이 원하는 것을 확실하지 ... 정확히 무슨 일이해야하는 것은 서버가 해당 전환하는 동안 다운입니까? – Jordumus
모든 사용자 세션에서 값이 0부터 시작합니까? 이미 보낸 알림 카운터를 유지할 수 있습니다. 그런 다음'if (Math.floor (value/interval)> alertsCount) {sendAlert(); alertsCount + = 1}' – pawel
이런 식으로 뭔가? https://jsfiddle.net/84n8wd4b/ 'value'는 범위 1 ... 3의 임의의 값으로 증가하여 중단 된 연결을 시뮬레이션하거나 값이 정확한 배수를 건너 뛰는 이유가 무엇인지를 시뮬레이트합니다. 아이디어는 '간격'의 배수가지나 자마자 경보를 보내는 것입니다. – pawel