1

戻り値のように mssql request.query からレコードセットを貼り付けようとしています。https://www.npmjs.com/package/mssqlのコードに従うと、コンソール出力を簡単に作成できますが、レコードセットを別の変数に割り当てようとすると機能しません。私は何を間違っていますか?

var sql = require('mssql');
var config = {
    user: 'sa',
    password: 'XXXXXX',
    server: '192.168.8.25',
    database: '3TWIMDB',
}
var resultado='';
sql.connect(config, function(err){
var request = new sql.Request();
  request.query('select 1 as VehiCLASS',function(err,recordset){
    console.log(recordset[0].VehiCLASS);
    resultado = recordset[0].VehiCLASS;
  });
  sql.close();
});
console.log("rsul: "+resultado);

ありがとう。

4

1 に答える 1

5

クエリは非同期で実行されます。 console.log実際にはresultado = recordset[0].VehiCLASS完了する前に実行されるため、設定されていません。

非同期操作に依存するすべてのコードを同期する必要があります。コールバックを使用してこれを行う必要があります。

resultado = recordset[0].VehiCLASS;
console.log("rsul: ", resultado);

ネストを防ぐために、独自のコールバック関数を指定することもできます。

function queryComplete(err, result) {
    // should handle error

    console.log("rsul: ", result);
}

resultado = recordset[0].VehiCLASS;
queryComplete(null, resultado);
于 2015-06-29T20:15:05.300 に答える