2016-03-29 9 views
0

node.js内のSQL接続からデータを取得していることを確認するコードをデバッグしました。しかし、私は結果を返すこの関数を取得することはできません。行をループすると、配列に項目が追加されますが、値が正しい行がコメントされています...なぜこの関数は空の配列[]を返しますか?でjavascript関数からSQLデータベースから読み込み配列を取得できません

function execute_stp_getconfigurationsbyuserid(userid, callback) 
{ 
    var results = []; 
    var Connection = require('tedious').Connection; 
    var config = { 
    }; 

    function item(id,name) 
    { 
     this.id = id; 
     this.name = name; 

     return this; 
    } 

    var Request = require('tedious').Request 
    var TYPES = require('tedious').TYPES; 

    var connection = new Connection(config); 

    var myCallback = function(err,data){ 
     connection.on('connect', function(err) { 

      var request = new Request("stp_GetConfigurationsByUserId @UserId", function(err) { 
       if (err) { 
        console.log(err);} 
      }); 

      request.addParameter('UserId', TYPES.Int, userid); 

      request.on('row', function(columns) { 
       var itm = new item(columns[0].value, columns[2].value); 
       results.push(itm); 
       //HAS THE CORRECT VALUE HERE 
       console.log(results); 
      }); 

      request.on('done', function(rowCount, more) { 
       console.log(rowCount + ' rows returned'); 
       myCallback(null,results); 
      }); 

      connection.execSql(request); 

     }); 
    } 

} 

呼び出す機能:ノードがasynchronously.Byリターン結果が実行される時間を働く

router.get('/getuserconfigurations', function(req, res, next) { 
    var config_ddl = execute_stp_getconfigurationsbyuserid(1); 
    console.log("Getting user configurations....") 
    console.log(config_ddl); 
    res.send(JSON.stringify(config_ddl)); 
}); 

答えて

1

は、上記のステートメントが完了する必要はありません。コールバックを使用してデータを渡したり操作したりしてください。 このリンクを参照してくださいnodeJs callbacks simple example

編集:コードは

var callback = function(err, data){ 
 
    console.log(data); 
 
} 
 

 
function execute_stp_getconfigurationsbyuserid(userid, callback) 
 
{ 
 
    var results = []; 
 
    var Connection = require('tedious').Connection; 
 
    var config = { 
 
    }; 
 

 
    function item(id,name) 
 
    { 
 
     this.id = id; 
 
     this.name = name; 
 

 
     return this; 
 
    } 
 

 
    var Request = require('tedious').Request 
 
    var TYPES = require('tedious').TYPES; 
 

 
    var connection = new Connection(config); 
 

 
    
 
    connection.on('connect', function(err) { 
 

 
    var request = new Request("stp_GetConfigurationsByUserId @UserId", function(err) { 
 
     if (err) { 
 
     console.log(err);} 
 
    }); 
 

 
    request.addParameter('UserId', TYPES.Int, userid); 
 

 
    request.on('row', function(columns) { 
 
     var itm = new item(columns[0].value, columns[2].value); 
 
     results.push(itm); 
 
     //HAS THE CORRECT VALUE HERE 
 
     console.log(results); 
 
    }); 
 

 
    request.on('done', function(rowCount, more) { 
 
     console.log(rowCount + ' rows returned'); 
 
     callback(null,results); 
 
    }); 
 

 
    connection.execSql(request); 
 

 
    }); 
 
    
 

 
}

+0

に変更することができますが、私はそれを持っているものでそれを行う方法私を見ることができますか? – user3788671

+0

'var myCallback = function(エラー、データ){ console.log(data); } ' このコールバックを' request.on( 'done'、function(rowCount、more){ } console.log(rowCount + 'rows returned'); myCallback(null、results); }}) –

+0

はまだ動作していません。 – user3788671

関連する問題