错误[ERR_HTTP_HEADERS_SENT]:将标头发送到客户端后,无法设置标头| NodeJS ExpressJS MySQL

时间:2020-10-11 08:42:07

标签: node.js express post

我不知道该说些什么,我认为代码说明了一切。我只想渲染某些东西,但出现此错误,但我不知道为什么。我从stackoverflow尝试了很多解决方案,而其他解决方案我无法一一列举。我正在使用mysql2 lib。请帮忙。

router.get("/:link", function(req, res){
  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) {
          res.send(row.link + row.views + rows.created)
          return;
        } else {
          res.send("URL does not exist")
          return;
        }
      }); 
  });
});

2 个答案:

答案 0 :(得分:0)

仅仅因为您将其发送到foreach中,您会收到该错误。

您是否只想一次发送它以及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;
                }
            }
        });
    });

});

答案 1 :(得分:0)

发送数据的服务。当您尝试循环返回数据时会遇到问题。这样做的好处是,您可以从循环中获得所有结果之后再回来。您可以为此使用异步结构。也许您可以尝试一下。

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);
  });


});