【问题标题】:using tedious connection,need to get the total data使用繁琐的连接,需要获取总数据
【发布时间】:2015-11-02 02:57:45
【问题描述】:

嘿,我对乏味和 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) 时,我也没有得到任何数据,任何人都可以为它提供解决方案, 我希望显示总数据

【问题讨论】:

    标签: reactjs es6-promise tedious es6-module-loader


    【解决方案1】:

    您似乎在执行查询之前调用了 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);
    

    docs 提及 done 事件,表明请求已完成:

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

    免责声明:我实际上并没有使用过Tedious,但从链接的文档来看,这看起来像您要查找的内容。

    【讨论】:

    • 出现错误:“未捕获的类型错误:无法读取未定义的属性 'then'”。
    • 我改了上面的代码但是没有得到任何数据
    猜你喜欢
    • 2019-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多