【发布时间】:2019-03-15 09:54:11
【问题描述】:
我正在尝试从数据库创建动态 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();
});
};
我期待低于输出 -
{ “组织01”:{ “客人01”:{ “图片”:[“IMG-20180117-WA0004.jpg”,“IMG-20180117-WA0004.jpg”], “视频”:[“IMG-20180117-WA0004.jpg”、“IMG-20180117-WA0004.jpg”] }, “来宾02”:{ “图片”:[“IMG-20180117-WA0004.jpg”、“IMG-20180117-WA0004.jpg”] } },“组织02”:{ “客人01”:{ “图片”:[“IMG-20180117-WA0004.jpg”、“IMG-20180117-WA0004.jpg”] } },“组织 03”:{ “客人01”:{ “图片”:[“IMG-20180117-WA0004.jpg”、“IMG-20180117-WA0004.jpg”] } },“组织 04”:{ “客人01”:{ “图片”:[“IMG-20180117-WA0004.jpg”、“IMG-20180117-WA0004.jpg”] } } }
【问题讨论】:
标签: node.js loops asynchronous