我正在嘗試通過保存在 mssql 資料庫中的 Id 記錄獲取資料。例如。我在郵遞員中形成這樣的獲取請求:localhost:3200/api/v1/players 問題是我收到如下所示的錯誤:
node:_http_outgoing:576
throw new ERR_HTTP_HEADERS_SENT('set');
^
Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client
為什么會這樣?是因為當我訪問該端點時其他一些查詢也在運行嗎?
我的資料查詢代碼:
const getPlayerById=async(req, res, next)=>
{
try
{
const id = req.params.id;
sql.connect(config, function(err)
{
if(err)
{
console.log(err);
}
else
{
var req=new sql.Request();
var player=req.input('input_parameter', sql.BigInt, id)
.query("select distinct * from players WHERE Id=@input_parameter", function(err, recordset)
{
if(err)
{
console.log("Error while querying for Id!: " err)
}
else
{
res.send(recordset);
}
});
}
return res.send("Record fetched for selected player!");
});
}
catch(error)
{
res.status(400).send(error.message);
}
}
在我的主 server.js 中,我已經連接了
app.use('/api/v1', playerRoutes.routes);
在路由器檔案中:
router.get('/players/:id', playerControll.getPlayerById)
我的郵遞員回應視窗中顯示的記錄如下:
無法發送請求錯誤:連接 ECONNREFUSED 127.0.0.1:3200
編輯********** 現在查詢正在作業,但我得到的記錄以嵌套格式顯示兩次!
像這樣->
{
"recordsets": [
[
{
"Id": 6,
"player_code": "P006",
"player_name": "Petr Cech",
"player_club": "Chelsea",
"player_position": "Goalkeeper"
}
]
],
"recordset": [
{
"Id": 6,
"player_code": "P006",
"player_name": "Petr Cech",
"player_club": "Chelsea",
"player_position": "Goalkeeper"
}
],
"output": {},
"rowsAffected": []
}
現在是什么毛病??為什么會這樣顯示?
uj5u.com熱心網友回復:
您收到此錯誤,僅僅是因為該res.send(recordset);行在return res.send("Record fetched for selected player!");
也許你應該添加一個return關鍵字return res.send(recordset);
uj5u.com熱心網友回復:
當您成功連接到資料庫并且查詢回傳沒有錯誤的結果時,您將回傳結果:
res.send(recordset)
而且,無論是否建立了與資料庫的連接,您都會發回一條訊息:
return res.send("Record fetched for selected player!");
res.send() 每個請求只能呼叫一次。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/526666.html
