NodeJS在MySQL查询函数中返回“未定义”

时间:2019-02-09 17:28:13

标签: javascript node.js mariadb

我有一个查询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。如果我没有其他信息,请发表评论。谢谢。

1 个答案:

答案 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));
    });
};