节点MySQL:从列返回一个值

时间:2017-06-02 13:16:59

标签: javascript mysql sql node.js

我在Node应用程序中使用mysql,Discord bot。我想从列中选择一个值,但是这样做很麻烦。这是我的代码:

let prefix;

connection.query(`SELECT * FROM guilds WHERE guildid = ${message.guild.id}`, function(error, commands) {
    if (error) throw error;

    if (commands.length) {  // the guild is in my database
        commands.forEach(value => 
            prefix = value.prefix;
            console.log(value.prefix) // doesn't fire
        }
    }
});

message.channel.send(prefix.length) // crashes [Cannot read property length of undefined]

我现在将第1行中的prefix设置为"3",它按预期工作(我认为),打印出数据库中的值,如下所示:

| guildname | guildid | ownername | ownerid | prefix |
------------------------------------------------------
| MyServer  | 7373732 | Rusty     | 636363  | !      |

1 个答案:

答案 0 :(得分:0)

未触发的控制台日志事件将暗示查询中的空结果集。 虽然看起来这不是您正在使用的确切代码,但forEach的参数列表看起来不对。

    (value => 
        prefix = value.prefix;
        console.log(value.prefix) // doesn't fire
    }

尝试让sql引擎通过sql参数包含变量值,而不是使用字符串插值。我的意思是:

connection.query('SELECT * FROM guilds WHERE guildid = ?',[message.guild.id], function(error, commands) { ...

https://www.sitepoint.com/using-node-mysql-javascript-client/

message.guild.id的价值是什么?