2

こんにちは、私は退屈で Es-6 に慣れていません。ばかげた質問かもしれませんが、苦労しています。配列内の合計データが必要です。退屈な接続を使用して、ここに私のコードがあります。

 getZipData() {
        var Connection = require('tedious').Connection;
        Request = require('tedious').Request;
        var config = {
            userName: 'xx',
            password: 'xxxx',
            server: 'xxx', // You can use 'localhost\\instance' to connect to named instance
            options: {
                database: 'xxxxx',
                rowCollectionOnDone:'true'
            }
        }
        var connection = new Connection(config);
        var jsonArray = [];
        connection.on('connect', function (err) {
            if (err) {
                console.log(err)
            }

            var sql = "SELECT * FROM xxxxx";
            return new Promise(function(resolve,reject){
            var request = new Request(sql,
                (err, rowCount, rows)=>{
                    if (err) {
                        reject(err);
                    }
                    else {
                        alert("rows");
                        console.log(rowCount + 'rows');
                    }
                });
                request.on('row', (columns)=>{
                        var rowObject = {};
                        columns.forEach((column)=> {
                            rowObject[column.metadata.colName] = column.value;
                        });
                        jsonArray.push(rowObject);
                    });
                connection.execSql(request);
                request.on('done', function(rowCount, more) {
                    console.log(rowCount + ' rows returned');
                    alert("jsonArray2:"+jsonArray);
                    resolve(jsonArray)
                });

            });
    })
}
componentWillMount() {
    this.getZipData().then(function(resolved){
        console.log(resolved);
        alert("data:"+resolved);
    }).catch(function(rejected){
        console.log(rejected);
    })
}

request.on('done', function(rowCount, more) を追加すると、データを取得できませんでした。誰でも解決策を提供できます。合計データを表示したい

4

1 に答える 1

0

クエリが実行される前に resolve を呼び出しているようです:

var jsonArray = [];

// Register callback for row event
request.on('row', (columns)=>{
  var rowObject = {};
  columns.forEach((column)=> {
    rowObject[column.metadata.colName] = column.value;
  });

  jsonArray.push(rowObject);
});

// Call resolve before executing request
resolve(jsonArray);

connection.execSql(request);

ドキュメントdoneには、リクエストが完了したことを示すイベントが記載されています。

request.on('done', function (rowCount, more, rows) {
  // Call resolve here instead?
  resolve(jsonArray);
});

免責事項:私は実際にTediousを使用したことはありませんが、リンクされたドキュメントから、これはあなたが探しているもののように見えます.

于 2015-08-10T09:38:17.130 に答える