NODEJS mysql 结果未定义

Posted

技术标签:

【中文标题】NODEJS mysql 结果未定义【英文标题】:NODEJS mysql result is undefined 【发布时间】:2021-02-19 04:51:00 【问题描述】:

您好,我遇到了节点 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 分钟吗?

【问题讨论】:

旁注:您应该创建一个全局连接对象。不是针对您收到的每条“消息” @Marc 但是当我在顶部执行 mysql.createConnection 时,添加 con.end(); forEach 不想工作。 不要关闭连接。让它们保持开放并重复使用。仅在退出程序时关闭它 然后我的连接超时了。 超时是什么意思?!您可以重用现有的 mysql 连接来执行多个查询。查询服务器前,请等待连接成功。 【参考方案1】:

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') return console.log("It isn't defined!"); 更轻松地完成

【讨论】:

谢谢。但是当我需要使用client.on('message', message => 中的一些数据或需要向数据库添加一些内容时。我怎样才能做到这一点?以后喜欢吗? con.query? @xmxf 是的,假设您想将每条消息添加到数据库中,在client.on('message', message => 中,放入con.query("INSERT INTO tablename (id, message) VALUES (?, ?)"), [message.id, message.content] 好的,我测试过了。它的工作时间更长,但看看这个:link

以上是关于NODEJS mysql 结果未定义的主要内容,如果未能解决你的问题,请参考以下文章

在查询Mysql Nodejs时结果未定义

nodejs中的自定义mysql函数返回未定义

Nodejs 类返回未定义

JQuery Post到NodeJS返回MySQL值给出未定义?

无法读取 Nodejs 中未定义的属性

全局结果的 JavaScript 绑定未定义 [关闭]