2017-03-14 16 views
1

ノードjsの関数から戻り値を取得する方法を理解できません。以下のコードを見つけてください(私はコンソールログでクエリの結果を得ることができますが、その値を返し、関数を呼び出した後に変数を格納することができません)。メイン:ノードjs:関数から値を返すことができません

function executeQuery(conn,query,cb) 
{ 
    conn.query(query, function (err, data) 
    { 
     if (err) console.log(err,data); 
     else 
      console.log(data); 
    }); 
    //return callback(data); 
}; 
:クエリを実行する

function dbConnection(dbname,hostname,UserID,Password,Port,query,callback) 
{ 
     var ibmdb = require('ibm_db'); 
     ibmdb.open("DATABASE="+dbname+";HOSTNAME="+hostname+";UID="+UserID+";PWD="+Password+";PORT="+Port+";PROTOCOL=TCPIP", function (err,conn) 
     { 
      if (err) return console.log(err); 
      var a= executeQuery(conn,query,function(err,data) 
      { 
      return data 
      }); 
     }); 
} 

機能:

dbConnection("xxx","xxx","xxx","xxx","50000","select xxx,xxx,CURRENCY from xxx where AccountID='85433333'") 

機能の設定データベース接続に

+0

のような呼び出しをコールバックから呼び出すことはできません。これは非同期のシナリオです – itzhar

+0

私はそれを非同期にしたいのですがどうすればいいですか教えてください –

+1

そのノードJSは非同期です。 返されたデータを取得したい場合は、 'promise'を作成することができます。あなたの質問から結果が出たら、解決する約束をしてください! https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise –

答えて

0

これは非同期関数なので、コールバックを使用して次のように返す必要があります。

dbConnection("xxx","xxx","xxx","xxx","50000","select xxx,xxx,CURRENCY from xxx where AccountID='85433333'", function(err, data) { 
    console.log(data) 
}) 

function dbConnection(dbname,hostname,UserID,Password,Port,query,callback) 
{ 
    var ibmdb = require('ibm_db'); 
     ibmdb.open("DATABASE="+dbname+";HOSTNAME="+hostname+";UID="+UserID+";PWD="+Passw ord+";PORT="+Port+";PROTOCOL=TCPIP", function (err,conn) 
    { 
     if (err) return console.log(err); 
     var a= executeQuery(conn,query,function(err,data) 
     { 
     callback(err, data) 
     }); 
    }); 
} 
関連する問題