Node.js繁琐的行是一个空的数组,但RowCount是正确的

所以这是我正在运行的基本代码块。 我已经得到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); } }); 

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

 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 }) ); 

这只是一个疯狂的猜测,但是看看源代码,当procDone事件被调用时,这些行被分配一个空的数组。 也许,尝试将rowCollectionOnDone设置为false? 此外,请求中似乎还有一个row事件。 你也可以订阅,看看是否得到你的任何输出。

根据繁琐的API

  callback function (err, rowCount, rows) { } 

rows行作为执行SQL语句的结果。

只有在Connection的config.options.rowCollectionOnRequestCompletion为真时才可用。

我不得不使用这个configuration来使它工作

  var config = { server: "localhost", database: "*****", userName: "sa", password: "******", port: 1433, options:{rowCollectionOnRequestCompletion:true} };