节点js Mongodb collection.find()查询结果在范围之外

时间:2015-01-12 11:40:26

标签: node.js mongodb

我在queryfunctin

之外查询了collection.find()查询结果

var 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

请给我解决为什么查询不返回函数外的结果

1 个答案:

答案 0 :(得分:0)

在传递给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 var不会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);