Naveen J
Naveen J

Reputation: 63

Push nested json values to array using node js

I need to show my json results into nested array format:

{
    "state": [
        {
            "stateName": "tamilnadu"
        }
    ],
     "city": [
        {
            "cityName": "chennai"
        }
    ]
}

This is my code. I'm new in node development

exports.stateId = function (req, res) {
    state.find(req.body.countryId,  function() {
        var query = N1qlQuery.fromString('SELECT stateId,stateName FROM travel _type='state'');

        myBucket.query(query, async function(err, result) {
            var state=[];
        await result.forEach(ele => {
        var item= {
            stateName:ele.stateName
        }
        if(ele.stateName != undefined)

        state.push(item);
    });

    res.send({state});
 });
 });
};


exports.cityId = function (req, res) {
    city.find(req.body.stateId,  function() {
        var query = N1qlQuery.fromString('SELECT cityId,cityName FROM travel where _type="city"');
        myCluster.query(query, async function(err, result) {
            var city=[];
        await result.forEach(ele => {
        var item= {
            cityName:ele.cityName
        }
        if(ele.cityName != undefined)

        city.push(item);
    });
    res.send({city});
 });
 });
};

Currently i will get results like two different array. i need to merge json results into single nested data

Upvotes: 1

Views: 802

Answers (1)

StepUp
StepUp

Reputation: 38209

If you have the following data:

const data_1 =
{
  "state": [
    { "stateName": "tamilnadu" }
  ]
};
const data_2 =
{
  "city": [
    { "cityName": "chennai" } ]
};

and your desired object is:

{
    "state": [
        {
            "stateName": "tamilnadu"
        }
    ],
     "city": [
        {
            "cityName": "chennai"
        }
    ]
}

then you can use Object.assign method:

let desired = Object.assign({}, data_1, data_2);
console.log(`desired: `, desired)

Upvotes: 1

Related Questions