【问题标题】:NODEJS mysql result is undefinedNODEJS mysql 结果未定义
【发布时间】: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 连接来执行多个查询。查询服务器前,请等待连接成功。

标签: javascript mysql node.js discord.js


【解决方案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
猜你喜欢
  • 2021-11-10
  • 2017-10-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-23
  • 1970-01-01
相关资源
最近更新 更多