Node.js Tedious Rows是一个空数组,但RowCount是正确的

Max*_*der 2 sql-server node.js express tedious

所以这是我正在运行的基本代码块.我已经按预期返回RowCount(现在只有5个项目)但是行返回为空数组.

难道我做错了什么?顺便说一句,我正在连接到SQL azure.我没有任何连接问题,我相信我已经把正确的选项(rowCollectionOnRequestCompletion为true).

有任何想法吗?

var Connection = require('tedious').Connection;
var Request = require('tedious').Request;

exports.list = function(req, res){
    var connection = new Connection({
    "userName": "myCoolUsername",
    "password": "SoMePa$$word",
    "server": "something.database.windows.net",
    "options": {
        "database": "mySampleDbName",
        "encrypt": true,
        "rowCollectionOnDone": true,
        "rowCollectionOnRequestCompletion": true
    }
});

connection.on('connect', function(err){
    //if no error, then we are good to go.
    if(err){
        console.log(err);
    }else
    {
        var request = new Request("SELECT * FROM Products", function(err, rowCount, rows){
            console.log(rowCount);
            res.send(rows);
        })
        connection.execSql(request);
    }
});
Run Code Online (Sandbox Code Playgroud)

mar*_*osh 6

我有同样的问题.使用Request对象上的rowCollectionOnDone: true选项和doneInProc事件解决,如下所示.我不知道为什么回调函数返回空数组,什么时候应该.

var config = {
    userName: '...',
    password: '...',
    server: 'localhost',
    options: {
        port: 2005,
        database: 'db1',
        rowCollectionOnDone: true
    }
}

connection.execSql(new Request('SELECT * FROM Products', function(err, rowCount, rows){
        if(err) {
            throw err;
        }
    })
    .on('doneInProc',function(rowCount, more, rows){
        console.log(rows); // not empty
    })
);
Run Code Online (Sandbox Code Playgroud)