首页 > 解决方案 > NodeJS在MySQL查询函数中返回“未定义”

问题描述

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

标签: javascriptnode.jsmariadb

解决方案


在 Nodejs 中,与 mysql 相关的函数始终是异步的,这意味着它们要么不返回任何内容,要么返回 undefined。

所以解决方案是使用回调函数。
例如。

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

推荐阅读