我在Node应用程序中使用mysql
,Discord bot。我想从列中选择一个值,但是这样做很麻烦。这是我的代码:
let prefix;
connection.query(`SELECT * FROM guilds WHERE guildid = ${message.guild.id}`, function(error, commands) {
if (error) throw error;
if (commands.length) { // the guild is in my database
commands.forEach(value =>
prefix = value.prefix;
console.log(value.prefix) // doesn't fire
}
}
});
message.channel.send(prefix.length) // crashes [Cannot read property length of undefined]
我现在将第1行中的prefix
设置为"3"
,它按预期工作(我认为),打印出数据库中的值,如下所示:
| guildname | guildid | ownername | ownerid | prefix |
------------------------------------------------------
| MyServer | 7373732 | Rusty | 636363 | ! |
答案 0 :(得分:0)
未触发的控制台日志事件将暗示查询中的空结果集。 虽然看起来这不是您正在使用的确切代码,但forEach的参数列表看起来不对。
(value =>
prefix = value.prefix;
console.log(value.prefix) // doesn't fire
}
尝试让sql引擎通过sql参数包含变量值,而不是使用字符串插值。我的意思是:
connection.query('SELECT * FROM guilds WHERE guildid = ?',[message.guild.id], function(error, commands) { ...
https://www.sitepoint.com/using-node-mysql-javascript-client/
message.guild.id的价值是什么?