i need to concatenate mongoose query result to single JSON Object. the problem is i am passing an array to mongoose ie;
Modem Serial: [11111111111,nodata,3333333333333333]
what i need is to concatenate data like this;
Final Modem : [{"m_model":"Modem 1","m_serial_no":"11111111111","available":"dispatched"},
{"m_model":"No data","m_serial_no":"No data"},
{"m_model":"Modem3","m_serial_no":"3333333333333333","available":"dispatched"}]
this is my code;
for(i=0;i<modem_serial.length;i++){
        console.log("Modem Serial: "+modem_serial[i]);
        Modem.findOne({m_serial_no: modem_serial[i]},{_id: 0,__v:0},function (err,m_data) {
                    //console.log("err: "+err);
                    if(m_data!=null){
                        modem=modem.concat(m_data);
                    }else{
                        console.log("\n\n\nm_data : "+m_data);
                        modem=modem.concat({
                            m_model: 'No data',
                            m_serial_no: 'No data'
                        });
                    }
                    console.log("\n\n\nFinal Modem : "+JSON.stringify(modem));
                });
            }
but after refresh i am getting this,
Final Modem :
 [{"m_model":"No data","m_serial_no":"No data"},{"m_model":"Modem 1","m_serial_no":"11111111111","available":"dispatched"},{"m_model":"Modem 3","m_serial_no":"3333333333333333","available":"dispatched"}]
the `No data` is going to first index. why??
here is my complete code,
router.get('/', function(req, res, next) {
Dispatched.find({status:"installed"},function(err,dispatched_data) {
    //console.log("SUCCES data: "+dispatched_data);
    var client_name=[],branch_name=[],serial=[],data_card_serial=[],sim_number=[],modem_serial=[],idu_serial=[],installed_date=[],
        ip_address=[],notes=[],ir_report=[],date,ipp={},ip=[],ir,note;
    for (var j = 0; j < dispatched_data.length; j++) {
            client_name=client_name.concat([{client_name:dispatched_data[j].client_name}]);
            branch_name.push(dispatched_data[j].branch_name);
            serial.push(dispatched_data[j].router_serial);
            data_card_serial.push(dispatched_data[j].data_card_serial);
            sim_number.push(dispatched_data[j].sim_number);
            if(dispatched_data[j].modem_serial != null){
                modem_serial.push(dispatched_data[j].modem_serial);
            }else{
                modem_serial.push("nodata");
            }
            idu_serial.push(dispatched_data[j].idu_serial);
            ip_address.push({ip_address:dispatched_data[j].ip_address});
            installed_date.push({installed_date:dispatched_data[j].installation_date});
            notes.push({notes:dispatched_data[j].notes});
            ir_report.push({ir_report:dispatched_data[j].ir_report});
        }
var data=[],router=[],datacard=[],sim=[],modem=[],idu=[],branch=[],i;
    console.log("Modem Serial: "+modem_serial.toString());
    console.log("\n\n\nDispatched Data Length ="+dispatched_data.length);
    for(i=0;i<modem_serial.length;i++){
        console.log("Modem Serial: "+modem_serial[i]);
        Modem.findOne({m_serial_no: modem_serial[i]},{_id: 0,__v:0},function (err,m_data) {
                    //console.log("err: "+err);
                    if(m_data!=null){
                        modem=modem.concat(m_data);
                    }else{
                        console.log("\n\n\nm_data : "+m_data);
                        modem=modem.concat({
                            m_model: 'No data',
                            m_serial_no: 'No data'
                        });
                    }
                    console.log("\n\n\nFinal Modem : "+JSON.stringify(modem));
                });
            }
res.end();
});
});
