我一直在尝试从我的数据库 (MySQL/PHPMyAdmin) 中的表中获取一些数字,并将它们添加到代码中的“let”中,但最终输出始终为 NaN。
我尝试使用 parseInt() 函数以防表中的数字被视为字符串但没有成功。
var pointsQuery = "SELECT * FROM reacts WHERE userid=" + message.author.id;
con.query(pointsQuery, function (err, rows, fiedls) {
if (err) {
message.channel.send(err.message);
throw err;
}
let upvotes = 0;
let downvotes = 0;
for (var i in rows) {
upvotes = upvotes + parseInt(rows[i].upvotes, 10);
downvotes = downvotes + parseInt(rows[i].downvotes, 10);
}
upvotes = upvotes - parseInt(rows, 10);
downvotes = downvotes - parseInt(rows, 10);
console.log("up: " + upvotes);
console.log("down:" + downvotes);
let finalPoints = 10 + parseInt((upvotes - (downvotes * 2)), 10);
message.channel.send("<@" + message.author.id + "> has " + finalPoints + " points!");
})
我用于“调试”的两个 console.log 的输出应该是一个数字,但输出的是“NaN”。
final points
应该是表达式 10 + (upvotes - (downvotes * 2))
最佳答案
在第 13 和 14 行中,您尝试解析并排列成一个 Int,这是不可能的。如果您想减去总行数,则需要使用 array.Length
或 array.Count
指定您想要的长度,具体取决于您的框架。此外,您确实应该创建一个变量 let len = parseInt(rows.Length, 10);
来减去,因为您使用相同的值执行了两次并且您不应该浪费资源
(转载评论回复)
代码:
let len = parseInt(rows.Length, 10);
upvotes = upvotes - len;
downvotes = downvotes - len;
关于javascript - 尝试将数据库中的整数添加到 let 但总是返回 NaN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57922368/