リクエストを作成し、返されたデータをリクエストの「行」イベントで cb のオブジェクトに追加してから、「完了」cb で何かを実行しようとしています。ものすごく単純; ただし、「完了」イベントは明らかにトリガーされていません。これが私の現在のコードです:
var connection = new Connection(config);
var executeTest = function (connection) {
var result = [];
var statement = "select val1, val2 from table;"
var request = new Request(statement, function (err, rowCount) {
if (err) {
console.log(err);
}
console.log(rowCount);
connection.close();
});
request.on('row', function(columns) {
var thisRow = {};
columns.forEach(function(column) {
thisRow[column.metadata.colName] = column.value;
result.push(thisRow);
});
console.log(result); //not empty
//tried making request2 here, no dice
//tried making a second connection here, no dice
//got error:
//'requests can only be made in the LoggedIn state,
//not the SentClientRequest state' :(
})
request.on('done', function (rC, more, row) { //never called
console.log(rC, more, row);
//other things to do
})
connection.execSql(request);
}
function test () {
var connection = new Connection(configure);
connection.on('connect', function(err) {
if (err) {console.log(err);}
console.log("Connected");
executeTest(connection);
})
}
test();
console.log(result); // []
//make second request using values from result
また、クエリの結果を別のクエリのパラメーターとして使用する方法を誰かが説明できれば、それは素晴らしいことです。test を呼び出した後、obv の結果は空ですが、request.on('row', cb) で空でない場合、現在の thisRow obj を使用してその cb で 2 番目の要求を行うことができませんでした。トランザクションを使用する必要がありますか? もしそうなら、最初のクエリの結果が2番目のクエリにパラメータとして渡される面倒なトランザクションでネストされたクエリを実行する方法の例を教えてください。ありがとう。