Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
menu search
person
Welcome To Ask or Share your Answers For Others

Categories

I am trying to create Dynamic JSON from database but due to async behaviour of node js I am not able to do that.

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();
    });
};

I am expecting below output -

{ "Organisation01": { "Guest01": { "Images": ["IMG-20180117-WA0004.jpg", "IMG-20180117-WA0004.jpg"], "Video": ["IMG-20180117-WA0004.jpg", "IMG-20180117-WA0004.jpg"] }, "Guest02": { "Images": ["IMG-20180117-WA0004.jpg", "IMG-20180117-WA0004.jpg"] } }, "Organisation02": { "Guest01": { "Images": ["IMG-20180117-WA0004.jpg", "IMG-20180117-WA0004.jpg"] } }, "Organisation03": { "Guest01": { "Images": ["IMG-20180117-WA0004.jpg", "IMG-20180117-WA0004.jpg"] } }, "Organisation04": { "Guest01": { "Images": ["IMG-20180117-WA0004.jpg", "IMG-20180117-WA0004.jpg"] } } }

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
184 views
Welcome To Ask or Share your Answers For Others

1 Answer

Since your for loop over count actually requires to make async calls objDb.wsGetGuestTree() , it would be advisable to use async module.

Please check : https://www.npmjs.com/package/async https://caolan.github.io/async/docs.html#eachSeries


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
...