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