APIルートとしてExpressを使用し、DBとしてMongoDBを使用してNode.js上のアプリケーションを使用しています。 私はラッフルを持っています。ラッフルには一度だけ参加する必要があります。 私は現在参加しているメモリ内の配列を使用していますが、同時に2つのAPIを要求すると、ユーザーは抽選で2回参加します。 抽選会に複数回参加できないようにするにはどうすればよいですか?1回のアクションを2回実行することから保護する
0
A
答えて
0
。つまり、同じ操作を2回行っても結果は変わりません。
たとえば、変数をインクリメントするインクリメント機能を呼び出すため倍倍(例えばx
に2を追加することになる二回x++
を呼び出す)をインクリメント得る変数をもたらし、ない冪等です。私はこれがあなたの現在のデザインの本質だと思っています。「あなたが同時に2つのAPIをリクエストすると、ユーザーは抽選で2回参加します。
偶数演算の例は、変数を値に設定することです。たとえば、var x = 1
を複数回呼び出すと、値1
はx
に割り当てられます。その行を何回呼び出しても、x
は常に1
になります。
あなたが始めるのに役立ついくつかのリソース:
0
ノードをmondodbに保存しておいてください。ノードを再起動してもこのリストを失いたくはありません。
"2回結合"問題については、APIにリクエストするクライアント側の機能を絞って、スロットル機能で渡された時間の間に1回しか呼び出せないようにしてください。
Exempleスロットル機能:
function throttle (callback, limit) {
var wait = false;
return function() {
if (!wait) {
callback.apply(this, arguments);
wait = true;
setTimeout(function() {
wait = false;
}, limit);
}
}
}
、今あなたの要求機能:あなたは冪等操作をサポートするためのワークフローを構築する必要があるだろう
var throttleApiFunc = throttle(apiFunc, 5000);
// this can only trigger one time each 5 seconds
throttleApiFunc();
関連する問題
- 1. 2回実行すると複数の行が作成されるSQL保護
- 2. SearchView onQueryTextSubmitを1回押すと2回実行する
- 3. 1秒に1回、2回に1回コードを実行できますか?
- 4. このアクションはなぜ2回実行されますか?
- 5. Redux-Sagaは1回のアクションで2回実行されています
- 6. $時計が2回ではなく1回実行する
- 7. SparkSessionは1回のアクションで2回実行されるのはなぜですか?
- 8. クラスごとに1回、グループに1回実行する
- 9. jqueryでアクションを1回だけ実行するには?
- 10. server.Rでダウンロードレポート(レポート生成)アクションを2回実行するネットワークエラー
- 11. Mongodbへの1回の接続でデータベースにアクションを実行することをお勧めしますか?
- 12. 2回目のDBアクションはトランザクションで実行をフリーズします
- 13. 2回目にアプリケーションを開くときにアクションを実行する
- 14. Javaアプリケーションを2回連続して実行すると、2回目の実行でログファイルが破損する
- 15. javascriptでコードを1回実行する
- 16. シェルスクリプトをcronjobで1回実行する
- 17. Zend Framework 11.1.9アクションが2回実行される
- 18. Javaアクションでコマンドが2回実行されている
- 19. サブミット時にアクションが2回実行される
- 20. 関数を2回実行する
- 21. Jarを2回実行する
- 22. rake db tasksを2回実行する
- 23. バックボーンイベントを2回実行する
- 24. Facebook fbAsyncInitを2回実行する
- 25. componentWillMountを2回実行する
- 26. WooCommerceカートページを2回実行する
- 27. php/MySQL INSERTを2回実行する
- 28. Railsバックグラウンドジョブを2回実行する
- 29. Unit-Testを2回実行するコンストラクタ
- 30. PreviewMouseMoveを2回実行する
同じユーザながら1つのAPIルートに第2のユーザの要求を行うことを避ける方法リクエストは処理中ですか?私たちは多くのユーザーがいるので、しばらく待っていると悪いです。 –
あなたはクライアント側でスロットルをしているので、ユーザーにとっては問題ではなく、待つことはなく、スロットルは発砲する前に待たずに(デバウンスします)、発射してから再び発砲することはできません。あなたはクライアント側を絞り込むので、同じユーザーが同時に処理する2つの要求ではなく、まさにあなたが望むものです。 – Gatsbill
はい、Chromeコンソール($ .post( '/ api ...'))からリクエストを送信して不正行為を行っているユーザーもいます –