简体   繁体   English

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

[英]NodeJS Returning 'undefined' In MySQL Query Function

I have a function that queries SQL to get a string called Prefix.我有一个查询 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;
    });
};

Whenever I print the Prefix out ( console.log(result[0].Prefix); ), it logs it fine - however, whenever I return it and then attempt to call the function, it always returns undefined.每当我打印出前缀( console.log(result[0].Prefix); )时,它都会记录它很好 - 但是,每当我返回它然后尝试调用该函数时,它总是返回未定义。

I am using Node JS Version 10.15.1 & I am using MariaDB Version 10.1.37 on the Raspbian stretch of Debian.我正在使用 Node JS 版本 10.15.1 & 我在 Debian 的 Raspbian 扩展上使用 MariaDB 版本 10.1.37。 Please comment if I have left any other information out.如果我遗漏了任何其他信息,请发表评论。 Thanks.谢谢。

In Nodejs the functions related to mysql are always asynchronous which means they will either not return anything or will retuen undefined.在 Nodejs 中,与 mysql 相关的函数总是异步的,这意味着它们要么不返回任何内容,要么返回 undefined。

So the solution is to use a callback function.所以解决方案是使用回调函数。
Eg.例如。

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM