我不知道该说些什么,我认为代码说明了一切。我只想渲染某些东西,但出现此错误,但我不知道为什么。我从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;
}
});
});
});
答案 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);
});
});