从我的代码开始,我希望查询后的_status
变量中的值和来自MongoClient.connect
的文件,但我从NULL
获得return _status
。如何在函数外传递值?谢谢你的回答。
function query(domain)
{
var _status;
MongoClient.connect(url, function(err, db) {
if (err) throw err;
db.collection("zone").find({"name" : domain}).toArray(function(err, result) {
if (!err) {
fs.writeFile('/root/'+domain+'.txt', result, function (err) {
if (err) throw err;
});
_status = "success";
}
else {
_status = "fail";
}
});
db.close();
});
return _status;
}
答案 0 :(得分:1)
您正在函数查询中调用异步函数(MongoClient.connect,.find),并尝试同步获取结果(_status)。这不起作用。您可以使用基于回调的方法或基于承诺的方法来让调用者知道_status的值。
有关承诺的更多信息,请参阅here。
答案 1 :(得分:0)
尝试类似的东西
function query(domain, callback)
{
var _status;
MongoClient.connect(url, function(err, db) {
if (err) throw err;
db.collection("zone").find({"name" : domain}).toArray(function(err, result) {
if (!err) {
fs.writeFile('/root/'+domain+'.txt', result, function (err) {
if (err) throw err;
});
_status = "success";
}
else {
_status = "fail";
}
callback(_status);
});
db.close();
});
}
query(domain, (status) => {
// Synchronous
// do something
console.log(status);
});