node js Mongodb collection.find() 查询结果超出范围

Node js Mongodb collection.find() query result outside scope

我在 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

请给我解决方案,为什么查询 return 没有函数外的结果

在传递给 exec() 的回调之外调用的 console.log() 将在 exec() 函数 return.

之前执行

正如@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);