Select语句工作正常,但是每当我尝试插入或更新记录集时,受影响的值都是不确定的。插入/更新在数据库中有效,我只是无法读取返回的值。

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语句不返回记录集,因此recordset是未定义的。请参阅文档的this section以了解有关如何获取受影响的行数的更多信息。

代码的问题是您期望affected作为promise中的第二个参数,但是promise只支持一个参数。因此,您必须通过以下方式访问受影响的行数:

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

关于javascript - Node mssql插入返回未定义的记录集,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34615684/

10-09 22:50