我正在尝试从数据库创建动态JSON,但是由于节点js的异步行为,我无法做到这一点。
exports.wsGetDirectoryTree = function(request,response){
pool.getConnection(function(err, connection) {
if (err) {
console.log("Error while connecting to DB : " + err);
response.send(error);
return;
} else {
// Org List
objDb.wsGetOrganisationTree(connection, function(callback) {
if(callback){
var data= JSON.stringify(callback);
var jsonObject = JSON.parse(data);
var count = Object.keys(jsonObject).length;
var finalResponse = '';
var org = '';
var gst = '';
var url = '';
// Org List
for(var i=0;i<count;i++){
var temp = JSON.stringify(jsonObject[i]);
var tempData = JSON.parse(temp);
(function(i){
// {"Apple"
org = '{'+'\"'+tempData.organisation_name+'\":';
console.log("org -> "+org);
// Guest list
objDb.wsGetGuestTree(tempData.organisation_id,connection, function(callback) {
if(callback){
var data= JSON.stringify(callback);
var jsonObject = JSON.parse(data);
var count = Object.keys(jsonObject).length;
// Guest list
for(var j=0;j<count;j++){
var temp = JSON.stringify(jsonObject[j]);
var tempData = JSON.parse(temp);
//{"Jhon":
gst = '{'+'\"'+tempData.guest_name+'\":';
console.log("gst = "+gst);
finalResponse = org + gst;
// Url list
objDb.wsGetUrlTree(tempData.guest_id,connection, function(callback) {
if(callback){
var data= JSON.stringify(callback);
finalResponse = finalResponse + data;
console.log("finalResponse = "+finalResponse);
return;
} else {
return;
}
});
}
data = data.replace('[','');
data = data.replace(']','');
return;
} else {
return;
}
});
})(i); //function for counting
} //loop end
response.send(data);
return;
} else {
response.send(invalidData);
return;
}
});
}
connection.release();
});
};
我期望低于输出-
{ “ Organisation01”:{ “ Guest01”:{ “图像”:[“ IMG-20180117-WA0004.jpg”,“ IMG-20180117-WA0004.jpg”], “视频”:[“ IMG-20180117-WA0004.jpg”,“ IMG-20180117-WA0004.jpg”] }, “ Guest02”:{ “图片”:[“ IMG-20180117-WA0004.jpg”,“ IMG-20180117-WA0004.jpg”] } },“ Organisation02”:{ “ Guest01”:{ “图片”:[“ IMG-20180117-WA0004.jpg”,“ IMG-20180117-WA0004.jpg”] }},“ Organisation03”:{ “ Guest01”:{ “图片”:[“ IMG-20180117-WA0004.jpg”,“ IMG-20180117-WA0004.jpg”] }},“ Organisation04”:{ “ Guest01”:{ “图片”:[“ IMG-20180117-WA0004.jpg”,“ IMG-20180117-WA0004.jpg”] }}
答案 0 :(得分:0)
由于您的for循环计数实际上需要进行异步调用objDb.wsGetGuestTree()
,因此建议使用异步模块。
请检查: https://www.npmjs.com/package/async https://caolan.github.io/async/docs.html#eachSeries