Javascript NODEJS mysql结果未定义

Javascript NODEJS mysql结果未定义,javascript,mysql,node.js,discord.js,Javascript,Mysql,Node.js,Discord.js,您好,我发现节点mysql有问题 client.on('message', message => { var con = mysql.createConnection({ host: config.host, user: config.user, password: config.password, database: config.database }); //con.connect(function (err){ i

您好,我发现节点mysql有问题

client.on('message', message => {

   var con = mysql.createConnection({
      host: config.host,
      user: config.user,
      password: config.password,
      database: config.database
   });

   //con.connect(function (err){ i was try with this
      //if(err) console.log(err); i was try with this
      con.query(`SELECT * FROM servers`, function (err, result){
            result.forEach(row => {
               if(row.guild === message.guild.id){
                 //some code
               }
            }
       }

20/30分钟,一切正常。 但后来我就崩溃了。 我找到了一个解决办法

client.on('message', message => {

   var con = mysql.createConnection({
      host: config.host,
      user: config.user,
      password: config.password,
      database: config.database
   });

      con.query(`SELECT * FROM servers`, function (err, result){
           if(result){
             result.forEach(row => {
               if(row.guild === message.guild.id){
                 //some code
               }
             }
           }else{
                console.log("no result");
           }
       }

但后来我只收到垃圾邮件“没有结果”,没有任何效果。
有人知道如何让它不仅在20分钟内仍能工作吗?

MySQL连接超时。我没想到会在30分钟内发生,但我觉得这就是问题所在。而是使用池连接。另外,最好将它放在
client.on('message',message=>{})之外,然后从内部引用它。例如:

const mysql = require('mysql');

var db_config = {
    host: 'localhost',
    user: 'root',
    password: '',
    database: 'mybots-db'
};

var con = mysql.createPool(db_config);
con.getConnection(function (err, con) {
    if (err) {
        connection.release();
        console.log(' Error getting mysql_pool connection: ' + err);
        throw err;
    }
    console.log('Connected to Database');
});



client.on('message', message => {
    //Your code here
});

作为旁注,如果您想检查是否有结果,可以使用
if(typeof result[0]=='undefined')返回console.log(“它没有定义!”)来轻松完成

旁注:您应该创建一个全局连接对象。不是每一个“信息”你receive@Marc但是当我在上面做mysql.createConnection时,我在添加con.end()时得到了连接超时;forEach不想工作。不要关闭连接。保持它们的开放性并重复使用。只有当你退出你的程序时才关闭它,然后我得到了连接超时。你说的超时是什么意思?!您可以重用现有的mysql连接来执行多个查询。在查询服务器之前,请等待连接成功。谢谢。但是当我需要在
客户端中使用一些数据时,在('message',message=>
上,或者需要向数据库中添加一些内容。我该怎么做?像以后一样?
con.query
?@xmxf是的,假设您想在
客户端中向数据库添加每条消息。在('message',message=>
上,放入
con.query(“插入到tablename(id,message)中)值(?,)”,[message.id,message.content]
Ok我测试了它。它的工作时间长得多,但看看这个: