簡體   English   中英

如何使用 node-mssql 查詢 SQL 服務器錯誤 [ERR_HTTP_HEADERS_SENT]?

[英]How to use node-mssql query SQL Server Error [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

  1. 所以我們在res.send()之前使用了return關鍵字,所以代碼中的第二個res不會 go 。
  2. 始終放置在您的特定代碼運行后返回某些內容的語句/代碼,因此我更改了transaction.commit()的 position 並將其放在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 });
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM