我有一个查询SQL的函数以获取名为Prefix的字符串。
function getPrefix(Guild) {
let query = "SELECT Prefix FROM Guilds WHERE GuildId=?";
Connection.query(query, [Guild.id], (err, result) => {
if (err) throw err;
return result[0].GuildPrefix;
});
};
每当我打印出前缀(console.log(result[0].Prefix);
)时,它都可以很好地记录-但是,每当我返回它然后尝试调用该函数时,它总是返回未定义的。
我正在使用Node JS版本10.15.1和我在Debian的Raspbian上使用的MariaDB版本10.1.37。如果我没有其他信息,请发表评论。谢谢。
答案 0 :(得分:0)
在Nodejs中,与mysql相关的功能始终是异步的,这意味着它们要么不返回任何内容,要么将返回未定义状态。
因此解决方案是使用回调函数。
例如
function getPrefix(Guild, callback) {
let query = "SELECT Prefix FROM Guilds WHERE GuildId=?";
Connection.query(query, [Guild.id], (err, result) => {
if (err){
callback(JSON.stringify(err));
};
callback(JSON.stringify(result));
});
};