node.js - Node.Js错误发送到客户端后无法设置标头
问题描述
我是 node.js 的初学者,我注意到在我第一次执行我的请求后它工作但 node.js 在它之后启动一个错误,它说:
Can not set headers after they are sent to client
这是我尝试过的
问题服务:
module.exports={
create:(data,callback)=>{
var myArray = new Array();
/* for(let item of data.players) {
console.log(item.firstname);
}*/
console.log(data);
data.players.forEach((player) => {
console.log(player.id);
console.log(player);
var playerModel ={
id : player.id,
firstname : player.firstname,
lastname : player.lastname,
position : player.position,
price : player.price,
appearences : player.appearences,
goals : player.goals,
assists : player.assists,
cleansheets : player.cleansheets,
redcards : player.redcards,
yellowcards : player.yellowcards,
image : player.image
};
console.log("model"+playerModel.position);
myArray.push(playerModel);
});
var id;
pool.query(
'insert into club(userid,email,password,name,price) values(?,?,?,?,?)',
[
data.userid,
data.email,
data.password,
data.name,
data.price
],
(error,result) => {
if(error){
callback(error);
}
for(var item of myArray){
pool.query(
'insert into players(id,firstname,lastname,position,price,appearences,goals,assists,cleansheets,redcards,yellowcards,image,clubid) values (?,?,?,?,?,?,?,?,?,?,?,?, ( SELECT id from club where id > ? ORDER BY id DESC limit 1 ) )',
[
item.id,
item.firstname,
item.lastname,
item.position,
item.price,
item.appearences,
item.goals,
item.assists,
item.cleansheets,
item.redcards,
item.yellowcards,
item.image,
0
],
(error,results,fields)=>{
if(error){
callback(error);
}
return callback(null,results);
},
);
}
return callback(null,result.insertId);
},
);
},
问题控制器:
const pool = require("../../config/database");
const{create,
getQuestionsById,
getQuestionsByCategory,
getQuestions,
getValidAnswer,
setValide,
CompareAnswers,
updateQuestions,
deleteQuestions
}=require("./questions.service");
module.exports={
createQuestions:(req,res)=>{
const body = req.body;
create(body,(err,results)=>{
if(err){
console.log(err);
return res.status(500).json({
success:0,
message:"database connexion error"
});
}
return res.status(200).json({
success:1,
data:results
});
});
},
路由器问题:
const{
createQuestions,
getQuestionsById,
getQuestions,
getQuestionsByCategory,
getValidAnswer,
CompareAnswers,
setValide,
updateQuestions,
deleteQuestions,
}=require("./questions.controller");
const router = require("express").Router();
router.post("/addQuestion",createQuestions);
router.get("/:id",getQuestionsById);
router.patch("/updateQuestion",updateQuestions);
router.delete("/",deleteQuestions);
router.get("/",getQuestions);
router.get("/VerifyAnswer/:id",getValidAnswer);
router.post("/getByCategory",getQuestionsByCategory);
router.post("/setValide", setValide);
router.post("/CompareAnswers", CompareAnswers);
module.exports=router;
我的目标是阻止此错误并找到解决方案,我的代码有什么问题?为什么我必须在每次执行请求后再次运行服务器?为什么请求有效,但最终会引发此错误?
显示错误的屏幕截图:
解决方案
我认为在您的问题服务中:
(error,results,fields)=>{
if(error){
callback(error);
}
你应该写
return callback(error)
这个错误通常发生在你的代码尝试为一个请求发送 2 个或更多响应时。让我知道它是否有帮助。
推荐阅读
- c# - 如何正确地将我的 ContextMenu 命令绑定到 RelayCommand?
- javascript - 在 Jest 中使用 toBeCalledWith() 测试参数
- autohotkey - 使用自动热键激活组中最近活动的窗口
- python - __call__ 或 __init__ 在这里调用?不要不明白哪个和为什么
- amazon-web-services - s3 存储桶策略,例如从两个不同的帐户读取
- html - 每次我尝试触发更改事件时在 ie11 中接收脚本 70 错误
- python - python3元类的调用顺序
- python - 通过在每个索引处随机选取元素来合并 N 个列表
- excel - Excel 条件格式公式和范围 (VBA)
- reactjs - 设计社交网站的react-reducer