データベースに特定の値の行があります。その値を自動的にinscrementsするシステムがあり、その値は一定ではありません。数値が30の倍数である場合にユーザーに警告
は、私はそれが の倍数だ毎回この値をユーザーに警告するスクリプトを構築するために必要なデモンストレーション:
- 値が30である - >アラート
- 値は45です - >
- 値が60のときに警告しないでください - >アラート
毎回ユーザーがアラートを受信し、私はイベントをデータベースに記録し、データの履歴を保持します。
このスクリプトは、少なくとも1日1回実行されるノード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である。そして、サーバは一日一回実行されるので、私はしたい場合は、この場合には、スクリプトのみアラートを送信しますその番号が再び障壁を通過したかどうかを確認する方法を見つけてください。
デモンストレーション:
- 値が29のとき - >
この問題を防ぐスクリプトを作成するにはどうすればよいですか?
ありがとうございます。代わりvalue
をinterval
の正確な倍数である場合value % interval
、すなわちモジュロ、確認の
私は...あなたが望むものを正確にわからない...何が起こる必要があることは、サーバがその遷移中にダウンしているのですか? – Jordumus
すべてのユーザーセッションで値が0から始まっていますか?すでに送信されたアラートのカウンタを保持することができます。次に、if(Math.floor(value/interval)> alertsCount){sendAlert();をチェックします。 alertsCount + = 1} ' – pawel
これは何か? https://jsfiddle.net/84n8wd4b/ 'value'は、範囲1 ... 3のランダムな値でインクリメントして、中断された接続をシミュレートするか、または値が正確な倍数をスキップする理由が何であるかをシミュレートします。このアイデアは、「間隔」の倍数を越えるとすぐに警告を送信することです。 – pawel