複数のデータベース呼び出しを行うために、Tedious ( http://pekim.github.io/tedious/ ) SQL サーバー プラグインで NodeJS を使用しようとしています。私の意図は次のとおりです。 1.接続を開きます 2.トランザクションを開始します 3.データを返さない複数のデータベース(ストアドプロシージャ)呼び出しを行います。4. トランザクションをコミットします (またはエラーでロールバックします)。5.接続を閉じる
NodeJS の (トランザクションを使用しない) .js ファイルの例を次に示します。複数のデータベース呼び出しを実行しようとすると、「要求は LoggedIn 状態でのみ実行でき、SentClientRequest 状態では実行できません」というエラーで失敗します。私が試しても、この問題は解決しません。
これを解決する方法を知っている人はいますか?
var Connection = require('tedious').Connection;
var Request = require('tedious').Request;
var config = {
userName: 'login',
password: 'password',
server: '127.0.0.1',
options: { rowCollectionOnDone: true }
};
var max = 1;
for (var i = 0; i < max; i++) {
var connection = new Connection(config);
function executeStatement() {
request = new Request("select 42, 'hello world'", function (err, rowCount) {
if (err) {
console.log(err);
} else {
console.log(rowCount + ' rows');
}
});
request.on('row', function (columns) {
columns.forEach(function (column) {
console.log(column.value);
});
});
request.on('doneInProc', function (rowCount, more, rows) {
});
request.on('doneProc', function (rowCount, more, rows) {
console.log('statement completed!')
connection.execSql(request);
});
request.on('returnStatus', function (status) {
console.log('statement completed!')
});
connection.execSql(request);
}
connection.on('connect', function (err) {
// If no error, then good to go...
executeStatement();
});
}
console.log('Done!');