Цикл с For, но всегда выполнять только последний цикл - node.js net-snmp

Я создаю мониторинг сервера Linux с помощью модуля node js и net-snmp. Эта часть представляет собой скрипт для проверки сервисов с OID, которые хранятся в базе данных mysql. У меня проблема, этот скрипт всегда выполняет только последний цикл. Я не знаю почему. Вот мой код:

connection.query("select * from SERVICE WHERE SERVER_ID = ? order by SERVICE_LIST_ID", [result[i].SERVER_ID], function(err2, services) {
    if (err2) throw(err2); 

    //tapping services
    for(var j in services){
        session.get ([services[j].SERVICE_OID], function (error, varbinds) {
            if (error) {
                console.error (error);
            } else {
            //save services
            console.log(j);
            var post  = {LOG_ID: result_logr.insertId, SERVICE_ID: services[j].SERVICE_ID, SERVICE_STATUS: 1};
            var query = connection.query('INSERT INTO LOG_SERVICE SET ?', post, function(err, result) {
                    if (err) { 
                connection.rollback(function() {
                  throw err;
                });
              }  
              connection.commit(function(err) {
                if (err) { 
                  connection.rollback(function() {
                    throw err;
                  });
                }
                console.log('Transaction Complete.');
                //connection.end();
              });
                });
                console.log(query.sql);
            }

        });
    }
    });

И отображение результата:

1
INSERT INTO LOG_SERVICE SET `LOG_ID` = 115, `SERVICE_ID` = 2, `SERVICE_STATUS` = 1
1
INSERT INTO LOG_SERVICE SET `LOG_ID` = 115, `SERVICE_ID` = 2, `SERVICE_STATUS` = 1

Итак, он выполняет только j=1. Помогите мне, пожалуйста. Спасибо


person Hernawan    schedule 07.10.2015    source источник


Ответы (1)


Может проблема с асинхронностью, ибо будет выполняться параллельно.

Попробуйте для этого:

async = require('async')
async.eachSeries(services, function(elem,callback){
//Your logic here

AFter that 
callback(); //to start the next loop
})
person Subburaj    schedule 07.10.2015