2016-08-12 14 views
0

graphQLを使用して応答が遅い人はいますか?私は実際に私のコレクションからの膨大なデータを持っているgraphQL応答が遅く、重複した応答

getActiveCaseWithActiveProcess(){ 
    console.log ("getActiveCaseWithActiveProcess"); 

    var result = []; 
    var activeElements = ActiveElements.find({ 
     type:"signal", 
     $or:[ 
     {signalRef:"start-process"}, 
     {signalRef:"start-task"}, 
     {signalRef:"close-case"} 
     ] 
    },{limit:200}).fetch(); 

    for (var AE of activeElements){ 

     var checkAECount = ActiveElements.find({caseId:AE['caseId']}).count(); 
     if (checkAECount <= 3){ 
     console.log ('caseId: ' + AE['caseId']); 
     var checkExistInResult = result.filter(function (obj) { 
      return obj.caseId === AE['caseId']; 
     })[0]; 

     if (checkExistInResult == null){ 
      result.push({ 
      caseId: AE['caseId'], 
      caseStart: AE['createdDate'] 
      }); 
     } 
     } 
    } 
    console.log("loaded successfully"); 
    return result; 
} 

これは、リゾルバでは私のコードです。約20000件のレコード。しかし、私がこれをロードすると、応答が遅すぎるし、それ自体でリロードすることができ、応答がさらに長くなります。

I20160812-04:07:25.968(0)? caseId: CASE-0000000284, 
I20160812-04:07:26.890(0)? caseId: CASE-0000000285 
I20160812-04:07:28.200(0)? caseId: CASE-0000000285 
I20160812-04:07:28.214(0)? getActiveCaseWithActiveProcess 
I20160812-04:07:28.219(0)? caseId: CASE-0000000194 
I20160812-04:07:29.261(0)? caseId: CASE-0000000197 

あなたがこの時間(20160812から04:07:28.214)で、上記の私の添付ファイルからの通知としてサーバが再び最初からロードするように繰り返し、応答に時間がかかるだろう理由です。

これは必ずしも起こっているわけではありません。サーバがゆっくりとロードされたときに発生します。サーバーが高速にロードされるとき。すべてがスムーズに実行されます。

+0

私は不思議なことに、すべてのレコードをオンザフライで読み込むのではなく、これに 'connection'型を使用して' connection'のカーソルを使ってDBクエリを作成するのはなぜですか? –

答えて

1

ここでその質問に答えるには十分な情報はありませんが、GraphQLとは何の関係もないと思います。私はあなたのクライアントがただリクエストをキャンセルし、最初のものがタイムアウトしたので別のものを作ると思います。それがGraphQLに渡される前にサーバにリクエストを記録することによって、それが起こっているかどうかを知ることができます。

関連する問題