Node.js 错误[ERR_HTTP_HEADERS_SENT]:发送到客户端后无法设置头| NodeJS ExpressJS MySQL

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(函数(键)

我不知道该说什么,我想代码说明了一切。我只是想渲染一些东西,出现了这个错误,但我不知道为什么。我从stackoverflow和其他解决方案中尝试了太多的解决方案,我无法将它们全部计算在内。我正在使用mysql2库。请帮忙

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不存在不起作用,它将永远加载。