我使用一个函数访问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'));感谢您能提供的任何帮助
发布于 2016-07-16 15:26:03
您需要使用回调。如下所示:
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);
});https://stackoverflow.com/questions/38408833
复制相似问题