我正在使用一个访问JSON文件中数据的函数,然后查询该文件中的特定键。我试图返回其调查结果,但似乎在查询找到密钥之前正在执行返回函数。
在查询之后我在查询函数中返回变量queryresponse,它总是以未定义的方式返回。
var jsonQuery = require('json-query');
var fs = require('fs');
function querydb(netdomain){
fs.readFile('./querykeys.json', 'utf8', function (err, data) {
if (err){console.log('error');}
var obj = JSON.parse(data);
var queryobject = netdomain.toString();
var queryresponse = jsonQuery('servers[netshare=' + queryobject + '].netdomain', {
data: obj
});
return queryresponse;
});
}
console.log(querydb('timeline'));
// returns undefined.
如何使此语句异步?
我想表示我也尝试了这个,也没有功能,仍然给出了未定义的响应。
var jsonQuery = require('json-query');
var fs = require('fs');
function querydb(netdomain){
fs.readFile('./querykeys.json', 'utf8', function (err, data) {
if (err){console.log('error');}
var obj = JSON.parse(data);
var queryobject = netdomain.toString();
return jsonQuery('servers[netshare=' + queryobject + '].netdomain', {
data: obj
});
});
}
console.log(querydb('timeline'));
感谢您提供的任何帮助
答案 0 :(得分:0)
您需要使用回调。像这样:
var jsonQuery = require('json-query');
var fs = require('fs');
function querydb(netdomain, callback) {
fs.readFile('./querykeys.json', 'utf8', function (err, data) {
if (err) {
callback(err);
return;
}
var obj = JSON.parse(data);
var queryobject = netdomain.toString();
callback(null, jsonQuery('servers[netshare=' + queryobject + '].netdomain', {
data: obj
}));
});
}
querydb('timeline', function (err, result) {
if (err) {
console.log('ERROR: ' + err);
return;
}
console.log(result);
});