2015-01-12 3 views
0

я ослабевать collection.find() результат запроса за пределами queryfunctinNode MongoDB collection.find расслоение плотной() результат запроса выходит за рамки

вар Fol;

Folder 
    .find({'parentid':id,'stats.archive':'0'}) 
    .lean() 
    .exec(function(err, f_folder) { 
     if(!err) { 
      fol = f_folder; 
     } 

    }); 

    console.log(fol); // I want query result here 

Пожалуйста, дайте мне решение, почему запрос не возвращает результат за пределами функции

+0

Вы не можете просто сделать это. Что вы пытаетесь достичь? Как правило, вы будете делать все внутри обратного вызова –

ответ

0

The console.log() называется вне обратного вызова, переданного exec() будет выполняться до возвращения exec() функции.

Что вам нужно сделать, как сказал @VsevolodGoloviznin, чтобы вызвать console.log() внутри обратного вызова, как:

Folder 
    .find({'parentid':id,'stats.archive':'0'}) 
    .lean() 
    .exec(function(err, f_folder) { 
    if(!err) { 
     fol = f_folder; 
     console.log(fol); 
    } 
    }); 

Это будет гарантировать, что ваш fol вар не будет undefined.

Что вы можете сделать, это обернуть логику внутри функций:

function findFolder(callback) { 
    Folder 
    .find({'parentid':id,'stats.archive':'0'}) 
    .lean() 
    .exec(function(err, f_folder) { 
     if(!err) { 
     fol = f_folder; 
     callback(fol); 
     } 
    }); 
} 

function logResult(result) { 
    console.log(result); 
} 

findFolder(logResult); 
Смежные вопросы