2017-01-17 12 views
0

mongoDBを単純なapiのパーティとして照会する際に以下を使用します。mongo/nodeのタイムアウトエラーを回避する

function queryDB(db,path,request,response){ 
    var collection = db.collection('workingCaseDB'); 
    collection.findOne({name:query}, function (err,result) { 
     if(err) 
      sendError(db,err,request,response); 
     else 
      displayResults(db,result,request,response); 
    }); 
} 

結果が見つからない場合、これはしばらくストールしてタイムアウトエラーをスローします。データベースに結果がない場合、これをより正常に失敗させるために何ができますか?つまり、結果が見つかるたびにクエリは3秒かかるが、結果が見つからない場合は、タイムアウトするまでに10秒かかり、エラーがスローされます。これを3秒間にどのように切ることができますか?

+1

結果がないということは、コレクション全体をチェックする必要があり、10秒かかることを意味します。 'findOne'が最初の一致を返します。最初の一致がチェックされるデータの上位30%に見つかった場合、それは<= 3秒を要します。チェックされるデータの下部30%に見つかる場合は、6秒を超えます。 スピードアップするためには、クエリの分かりやすいインデックスを作成する必要があります。 – pintxo

+0

あなたのクエリで何を使用しても、それを適切にインデックス化しようとすると、それは飛ぶでしょう... – abeyaz

答えて

関連する問題