Discord.js 无法使用 mySQL 在数组中找到项目时出错
Posted
技术标签:
【中文标题】Discord.js 无法使用 mySQL 在数组中找到项目时出错【英文标题】:Error when Discord.js cannot find an item in an array with mySQL 【发布时间】:2020-09-10 22:23:31 【问题描述】:我收到此错误:
C:\Users\redacted\Downloads\redacted\node_modules\mysql\lib\protocol\Parser.js:437
throw err; // Rethrow non-MySQL errors
^
TypeError: Cannot read property 'reason' of undefined
at Query.con.query (C:\Users\redacted\Downloads\redacted\bot.js:83:30)
这是我的代码:
const args = message.content.split(' ').slice(1);
let member = args.slice(0, 1).join(' ');
con.query(`SELECT * FROM bans WHERE id=$member`, (err, rows) =>
if (err) throw err;
// console.log("check here "+member);
let reason;
reason = rows[0].reason;
if(reason="undefined") return message.reply(`I did not find any users with that ID banned. You must check by user ID!`);
if(reason) return message.reply(`I found the user banned for the reason **$reason**`);
我在这里迷路了。基本上,我需要它在数据库中查找项目。它使用命令+check(此处为id)将名为“id”的列与给定的列进行比较。然后,如果它找到一个,它会在 id 的同一行中提取“原因”。问题是,当运行 +check 但它没有找到与给定 ID 匹配的 ID 时,它会使 Discord 机器人崩溃并给出该错误。我抛出错误(我认为)。我对 mySQL 很陌生,如果这只是一个简单的错误,我很抱歉。提前致谢。
【问题讨论】:
您尝试过什么调试问题?如果发生该错误,rows
包含什么?
【参考方案1】:
你需要处理没有找到行的情况:
const row = rows[0];
if (row)
const reason = row;
// rest of your code
else
// no rows found
【讨论】:
这 100% 解决了我的问题。这也是我必须在这个机器人的一个关键组件中重用的东西。非常非常感谢!以上是关于Discord.js 无法使用 mySQL 在数组中找到项目时出错的主要内容,如果未能解决你的问题,请参考以下文章
从函数中导出数据 [mysql, node.js, discord.js]
discord.js:随机化存储为 json 文件的数组内容
Discord.js,通过数组中的 ID 查找用户是不是具有角色