Thursday, 25 May 2017

Json data always [] on db nodejs

can anyone help me to find why my json is always []?

I'm receiving info from a device and then i save this in my db. The json I'm trying to insert in db is:

{"status":false,"interfaces":[{"ifname":"lte0","enabled":"1"},{"ifname":"lte1","enabled":"1"},{"ifname":"lte2","enabled":"1"}] ,"sn":"IN-3M-1107827","name":"IN-3M-1107827"},"sn":"IN-3M-1107827","name":"IN-3M-1107827"}

but what is inserted on db is always {"status":false,"interfaces":[],"sn":"IN-3M-1107827","name":"IN-3M-1107827"} for different device_id.

I dont get it... can anyone understand the problem? I suspect this is about promises and my for loop..

LogsController.prototype.pollingServicesInterfaces = function () {
    var numDevices = 1;
    var services = {};
    var allPromises = [];
    return Database.Devices.getDevices().then(function (devices) {
        return new Promise(function (resolve, reject) {
            async.each(devices, function (device, callback) {
                var interfaces = [];
                for(var i=0;i<3;i++){   
                    var radio="mwan"+i;                 
                    Controllers.Gps.getRadioInfo('uci', 'get', {"config": "network", "section":radio}, device).then(function (data) {
                        var service={                                                                               
                            "ifname":data.values.ifname,
                            "enabled":data.values.enabled
                        };
                        interfaces.push(service);
                    });
                }

                var wifi="radio0";
                Controllers.Gps.getRadioInfo('uci', 'get', {"config": "wireless", "section":wifi}, device).then(function (data) {
                    var service={                                                                               
                        "ifname":data.values.ifname,
                        "enabled":data.values.enabled
                    };
                    interfaces.push(service);
                })

                var service_data = {
                    "sn":device.data.sn,
                    "name":device.data.name,
                    "status":device.data.status,
                    "interfaces": interfaces 
                };
                services = {
                    "id":uuid.v4(),
                    "data": service_data                            
                };
                Database.Devices.getDeviceServicesById(device.id).then(function (result) {
                    if (result.length > 0) {                    
                        allPromises.push(Database.Services.updateRow(services, device.id));
                    }
                    allPromises.push(Database.Services.addRow(services, device.id));
                });

                Promise.all(allPromises).then(function() { // do stuff when success
                    return callback();
                }).catch(function (e) { // error handling
                    return callback(e);
                });

            }, function (error) {
                if (error) {
                    return reject(error);
                }
                return resolve();
            });
        });
    }).catch(function (e) {
    });
}



via Catia Matos

No comments:

Post a Comment