node.js - 如何使用 node-mssql 查询 SQL Server 错误 [ERR_HTTP_HEADERS_SENT]?
问题描述
const request = new sql.Request(transaction)
request.query('select * from TB_USER', (err, result) => {
if (err) {
res.send(err);
transaction.rollback(err => {
console.log("Transaction RolledBack.")
})
}
else{
res.status(200).json({"result":result.recordsets})
transaction.commit(err => {
console.log("Transaction committed.")
})
}
})
const request1 = new sql.Request(transaction)
request1.query('select * from TB_USER', (err, result) => {
if (err) {
res.send(err);
transaction.rollback(err => {
console.log("Transaction RolledBack.")
})
}
else{
res.status(200).json({"result":result.recordsets})
transaction.commit(err => {
console.log("Transaction committed.")
})
}
})
错误:
_http_outgoing.js:536
抛出新的 ERR_HTTP_HEADERS_SENT('set');
^错误 [ERR_HTTP_HEADERS_SENT]:在将标头发送到客户端后无法设置标头
在 ServerResponse.setHeader (_http_outgoing.js:536:11)
在 ServerResponse.header (A:\register-api\node_modules\express\lib\response.js:771:10)
在 ServerResponse.send (A:\register-api \node_modules\express\lib\response.js:170:12)
在 ServerResponse.json (A:\register-api\node_modules\express\lib\response.js:267:15)
在 A:\register-api\src\utils\functions\updateCust.js:15:33 在 A:\register-api\node_modules\mssql\lib\base\request.js:446:9 在 Request.userCallback (A :\register-api\node_modules\mssql\lib\tedious\request.js:479:15) 在请求.callback (A:\register-api\node_modules\tedious\lib\request.js:206:14) 在 Parser .onEndOfMessage (A:\register-api\node_modules\tedious\lib\connection.js:2902:22) 在 Object.onceWrapper (events.js:420:28) { code: 'ERR_HTTP_HEADERS_SENT' } [nodemon] 应用程序崩溃 -在开始之前等待文件更改...
解决方案
一个请求不接受两个res
,
- 所以我们
return
之前使用了关键字res.send()
,所以它不会res
在代码中排在第二位。 - 始终放置在您的特定代码运行后返回某些内容的语句/代码,因此我更改了位置
transaction.commit()
并将其放在之前return res.send()
。
if (err) {
transaction.rollback((err) => {
console.log("Transaction RolledBack.");
});
return res.send(err);
} else {
transaction.commit(() => {
console.log("Transaction committed.");
});
return res.status(200).json({ result: result.recordsets });
}
推荐阅读
- vba - 邮件合并电子邮件与同一帐户相关的多条记录
- testing - 测试 django celery,与数据库交互?
- r - 缺少参数“nm”,没有默认值
- asp.net-core - EF Code First ApplicationUser 需要 DateTime 未添加
- memory - 通过命令行在 RAM 中存储一些文本
- java - 使用泛型类型实现 Java 接口的类:警告“类型安全:返回类型...需要未经检查的转换以符合”
- mqtt - Sonoff RF Bridge to Mosquitto(在 Windows 上)配置
- python - OpenCV 无法从文件中读取视频流
- node.js - 在 mqttjs 中发布多个缓冲区
- powershell - 使用 gMSA 帐户执行命令