programing

MySQL 쿼리 함수에서 '정의되지 않음'을 반환하는 NodeJS

starjava 2023. 9. 19. 20:40
반응형

MySQL 쿼리 함수에서 '정의되지 않음'을 반환하는 NodeJS

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 Version 10.15.1 & Debian의 Raspbian stretch에서 MariaDB Version 10.1.37을 사용하고 있습니다.제가 다른 정보를 빠뜨린 것이 있다면 댓글을 달아주시기 바랍니다.감사해요.

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

언급URL : https://stackoverflow.com/questions/54608712/nodejs-returning-undefined-in-mysql-query-function

반응형