我在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
请给我解决为什么查询不返回函数外的结果
答案 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);