Node.js 错误[ERR_HTTP_HEADERS_SENT]:发送到客户端后无法设置头| NodeJS ExpressJS MySQL
我不知道该说什么,我想代码说明了一切。我只是想渲染一些东西,出现了这个错误,但我不知道为什么。我从stackoverflow和其他解决方案中尝试了太多的解决方案,我无法将它们全部计算在内。我正在使用mysql2库。请帮忙Node.js 错误[ERR_HTTP_HEADERS_SENT]:发送到客户端后无法设置头| NodeJS ExpressJS MySQL,node.js,express,post,Node.js,Express,Post,我不知道该说什么,我想代码说明了一切。我只是想渲染一些东西,出现了这个错误,但我不知道为什么。我从stackoverflow和其他解决方案中尝试了太多的解决方案,我无法将它们全部计算在内。我正在使用mysql2库。请帮忙 router.get(“/:link”,函数(req,res){ connection.query( “从您的Short中选择*,其中link=”+req.params.link+“”, 函数(错误、结果、行、字段){ Object.keys(结果).forEach(函数(键)
router.get(“/:link”,函数(req,res){
connection.query(
“从您的Short中选择*,其中link=”+req.params.link+“”,
函数(错误、结果、行、字段){
Object.keys(结果).forEach(函数(键){
变量行=结果[键];
console.log(row.link)
if(row.link=req.params.link){
res.send(row.link+row.views+rows.created)
返回;
}否则{
res.send(“URL不存在”)
返回;
}
});
});
});
仅仅因为您在每次收到错误时都会发送它
您想只发送一次,并且发送db的第一项吗?如果是,请使用此选项:
router.get("/:link", function (req, res) {
var i = 0;
connection.query(
"SELECT * FROM yourshort WHERE link = '" + req.params.link + "'",
function (err, result, rows, fields) {
Object.keys(result).forEach(function (key) {
var row = result[key];
console.log(row.link)
if (row.link = req.params.link) {
if (i === 0) {
res.send(row.link + row.views + rows.created)
i = 1;
}
} else {
if (i === 0) {
res.send("URL does not exist")
i = 1;
}
}
});
});
})) 发送数据的服务。尝试在循环中返回数据时会遇到问题。这样做的好处是,当你从循环中得到所有结果后,你会回来。您可以为此使用异步结构。也许你可以试试这个
router.get("/:link", (req, res) => {
let myObject = {};
connection.query(
"SELECT * FROM yourshort WHERE link = '" + req.params.link + "'",
async(err, result, rows, fields) => {
await Object.keys(result).forEach(function(key) {
var row = result[key];
if(row.link = req.params.link) {
myObject[key] = {link: row.link, views: row.views, created: rows.created}
return;
} else {
myObject['error'] = 'URL does not exist';
return;
}
});
await res.send(myObject);
});
});
这是因为您在一个循环中多次调用
res.send()
。感谢您的帮助,但URL不存在不起作用,它将永远加载。