1

angular と node js を使用してアプリを構築しています。何らかの理由で数分かかる30,000行のようなものを挿入する非常に大きなクエリ(挿入クエリ)があります(大丈夫だと思います)。

これは私のクエリです:

this.createCourts = function (req, res, next){
  console.log("entered creation courts");
      connection.query('CALL filldates("' + 
        req.body['startDate'] + '","' +
        req.body['endDate'] + '","' +
        req.body['numOfCourts'] + '","' +
        req.body['duration'] + '","' +
        req.body['sundayOpen'] + '","' +
        req.body['mondayOpen'] + '","' +
        req.body['tuesdayOpen'] + '","' +
        req.body['wednesdayOpen'] + '","' +
        req.body['thursdayOpen'] + '","' +
        req.body['fridayOpen'] + '","' +
        req.body['saturdayOpen'] + '","' +
        req.body['sundayClose'] + '","' +
        req.body['mondayClose'] + '","' +
        req.body['tuesdayClose'] + '","' +
        req.body['wednesdayClose'] + '","' +
        req.body['thursdayClose'] + '","' +
        req.body['fridayClose'] + '","' +
        req.body['saturdayClose'] +
        '");', function(err, result, fields){

        if (err){
          console.log("error is" + err);
          return res.send(500, "fail");              
        }
        else{
          console.log("finsihed");
          return res.send(200);
        }
      });
  });
};

私のUIは、次のようなサービスをトリガーするボタンをクリックします:

  CourtsService.createCourts.save({}, 
    {"startDate": dateService.Date_toYMD($scope.startDate), 
    "endDate": dateService.Date_toYMD($scope.endDate), 
    "numOfCourts": $scope.numOfCourts, 
    "duration": $scope.duration, 
    "sundayOpen": $scope.sundayOpen.hour, 
    "mondayOpen": $scope.mondayOpen.hour, 
    "tuesdayOpen": $scope.tuesdayOpen.hour, 
    "wednesdayOpen": $scope.wednesdayOpen.hour, 
    "thursdayOpen": $scope.thursdayOpen.hour, 
    "fridayOpen": $scope.fridayOpen.hour, 
    "saturdayOpen": $scope.saturdayOpen.hour, 
    "sundayClose": $scope.sundayClose.hour,
    "mondayClose": $scope.mondayClose.hour,
    "tuesdayClose": $scope.tuesdayClose.hour,
    "wednesdayClose": $scope.wednesdayClose.hour,
    "thursdayClose": $scope.thursdayClose.hour,
    "fridayClose": $scope.fridayClose.hour,
    "saturdayClose": $scope.saturdayClose.hour},
     function(data){
      $scope.showSearching = false;
      $dialog.messageBox("success", btns).open();
  }, function(err){
      $scope.showSearching = false;
      $dialog.messageBox("fail", err.data, btns).open();
  });

実際にクエリを実行する関数の最初の行にこの行を追加しました(ここのコードにあります) console.log("entered creation courts");

私の問題は、クエリが数分間 (場合によっては 10 分) 実行されるため、関数が何度も呼び出されているように見えることです。これは、コンソールで約 1 分ごとに "entered creation courts" という行が表示され、もちろん、これは私が望んでいることではありません。

何が createCourts 関数を何度もトリガーするのかわかりません。

おそらく、1 分 (またはそれに近い時間) 後に応答が受信されない場合、UI がタイムアウトになり、サービスが再度トリガーされるためです。これが理由である場合、サービスに応答を待つように指示するにはどうすればよいですか?

4

1 に答える 1