node-mssql插入返回未定义的logging集

select语句工作正常,但每当我尝试插入或更新logging集和受影响的值是未定义的。 插入/更新在数据库中工作,我只是不能读取返回的值。

var sql = require('mssql'); var config = {...}; sql.connect(config).then(function() { new sql.Request().query("INSERT INTO MyTable (Name, Age) VALUES ('John', 30)").then(function(recordset, affected) { console.log('Recordset: ' + recordset); console.log('Affected: ' + affected); }).catch(function(err) { console.log('Request error: ' + err); }); }).catch(function(err) { if (err) { console.log('SQL Connection Error: ' + err); } }); 

输出到控制台是:

 Recordset: undefined Affected: undefined 

我觉得我必须在这里错过一些非常简单的事情。

如注释中所述, INSERT语句不返回logging集,因此recordset未定义。 请参阅文档的这一部分 ,以了解有关如何获取受影响的行数的更多信息。

你的代码的问题是你期待affected承诺的第二个参数的affected ,但承诺只支持一个参数。 因此,您必须以这种方式访问​​受影响的行数:

 var sql = require('mssql'); var config = {...}; sql.connect(config).then(function() { var request = new sql.Request(); request.query("INSERT INTO MyTable (Name, Age) VALUES ('John', 30)").then(function(recordset) { console.log('Recordset: ' + recordset); console.log('Affected: ' + request.rowsAffected); }).catch(function(err) { console.log('Request error: ' + err); }); }).catch(function(err) { if (err) { console.log('SQL Connection Error: ' + err); } });