2017-01-17 3 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

Ничего не найдено, так как db должен проверить всю коллекцию, и кажется, что это занимает 10 секунд. 'findOne' вернет вам первое совпадение, если первое совпадение найдено в верхних 30% проверяемых данных, оно займет <= 3 секунды. Если он будет найден в нижней части 30% данных, которые нужно проверить, он займет> 6 секунд. Возможно, вам придется посмотреть на создание разумного индекса для вашего запроса, чтобы ускорить работу. – pintxo

+0

Что бы вы ни использовали в своем запросе, попробуйте правильно его проиндексировать, а затем он будет летать ... – abeyaz

ответ

Смежные вопросы