2013-05-08 3 views
0

У меня есть сервер, который я использую для хранения файлов журнала с использованием mongodb. проблема во время просмотра по ревизии. У меня есть заметная задержка и всплеск производительности на сервере. есть лучший способ сделать следующее:Плохое выполнение запроса

function getrevisionslist(project,callback){ 
MongoClient.connect("mongodb://localhost:27017/devbed", {native_parser:true}, function(err, db) { 
tmp=[] 
     if(err) { console.dir(err); } 
     db.collection(project).find({}).toArray(function(err, items) { 
     fillrevarr(tmp,items,0,project,callback); 
     db.close(); 
     }); 

    }); 
} 

function fillrevarr(tmp,items,i,project,callback){ 
    console.log(items) 
    num=JSON.stringify(items[i].revision).replace(/["']{1}/gi,""); 
    tmp.push("<a href=\"/"+project+"/"+num+"/Log\">"+num+"</a>") 
    if(i==items.length-1){callback(tmp)} 
    else{fillrevarr(tmp,items,(i+1),project,callback)} 
} 

Это дает мне массив всех ревизий.

ответ

2

Не преобразовывайте результирующий набор в массив. Вместо этого используйте курсор:

var cursor = db.collection(project).find({}); 
cursor.each(function(err, item) { 
    // ... 
}); 
+0

Спасибо, нашли то же самое через несколько секунд после того, как вы ответили. – legacy

+0

Задержка длилась от 7 секунд до неопределяемого. – legacy