2016-12-29 2 views
0

私の関数内の変数に保存する特定の列を選択する方法を知りました。私は両方の値を必要とするので、私は両方のクエリを同時に取得しています。私はAzure SQLデータベースでノードJSを使用しています。私はSQL NPMプラグインを面倒に使っています。私はこれにかなり新しいので、どんな助けも高く評価されます。ありがとう!SQLを使用してノードJS内の特定の列の値を使用するには

サイドノート:行カウントを返す最下部の要求は「何もしていません」。なぜ私が知りたいのか分かっている人は、それは重要ではありませんが、私は興味があります。

function Charge(chipId, LocID) { 
     request = new Request("SELECT car_id, userOwner FROM Cars WHERE carChipId = '" + chipId + "'", function (err) { 
      if (err) { 
       console.log(err); 
      } 
     }); 
     var result = ""; 
     request.on('row', function (columns) { 
      columns.forEach(function (column) { 
       if (column.value === null) { 
        console.log('NULL'); 
       } else { 
        result += column.value + " "; 
       } 
      }); 
      console.log(result); 
      result = ""; 
     }); 

     request.on('done', function (rowCount, more) { 
      console.log(rowCount + ' rows returned'); 
     }); 
     connection.execSql(request); 
    } 

答えて

1

変数に保存された特定の列を選択するために次のことをしよう:

function charge(chipId) { 
    var carId = ''; 
    var userOwner = ''; 

    request = new Request(`SELECT car_id, userOwner FROM Cars WHERE carChipId = '${chipId}'`, function(err) { 
    if (err) { 
     console.log(err); 
    } 
    }); 

    request.on('row', function(columns) { 

    carId = columns[0].value; 
    userOwner = columns[1].value; 
    console.log('carId: ', carId); 
    console.log('userOwner: ', userOwner); 
    }); 

    connection.execSql(request); 
} 

別のオプションは、あなたがtrueとしてoptions.useColumnNamesを設定することができるということです(デフォルト:false)キーと値のコレクションとして行を返すようにします。以下はコード例です。

var config = { 
    userName: '<userName>', 
    password: '<password>', 
    server: '<serverName>.database.windows.net', 

    options: { 
    encrypt: true, 
    database: '<database>', 
    useColumnNames: true 
    } 
}; 

var connection = new Connection(config); 

connection.on('connect', function(err) { 
    charge('<chipId>'); 
}); 

function charge(chipId) { 
    var carId = ''; 
    var userOwner = ''; 

    request = new Request(`SELECT car_id, userOwner FROM Cars WHERE carChipId = '${chipId}'`, function(err) { 
    if (err) { 
     console.log(err); 
    } 
    }); 

    request.on('row', function(columns) { 
    carId = columns.car_id.value; 
    userOwner = columns.userOwner.value; 
    console.log('carId: ', carId, ' userOwner: ', userOwner); 
    }); 

    connection.execSql(request); 
} 

あなたはEvent: doneがトリガされたい場合は、connection.execSql(request)の代わりにconnection.execSqlBatch(request)を使用してください。詳細はhttp://tediousjs.github.io/tedious/api-connection.html#function_execSqlBatchを参照してください。

+0

また、私は一つの 'connection.on( 'connect'、'何かの理由で何か他に知っておくべきことがありますか?)から複数の要求をしているように見えませんか? – user3784444

+1

http:// [この投稿](https://www.windowsfiles.jp/fairu/publications/windows/index.php?topicid=1999)に記載されているように、これはサポートされていないことを意味するtediousjs.github.io/tedious/api-connection.htmlです。 –

+0

このトピックに関する別の投稿をしましたが、私の状況を確認して問題なく動作することを確認してもらえますか? – user3784444

関連する問題