nodejs mysql关闭和打开连接

anauzrmj  于 2021-06-20  发布在  Mysql
关注(0)|答案(3)|浏览(726)

我有一个nodejs应用程序连接到mysql当我离开连接打开服务器关闭它,当我使用con.destroy或con.end我不能重新连接到mysql。
我应该怎么做,是不是更好地保持关闭和意见,为每个请求新的连接知道会有很多。

module.exports = class DataAccessLayer {
constructor() {
    this.con = mysql.createConnection({
        host: ("host.com"),
        user: ("asdfg"),
        password: ("zxcvb"),
        database: ("DB_example")
    });

    this.con.connect(function (err) {
        if (err) throw err;
        console.log("Connected to DB");
    });
}

getUserBySenderId(senderId) {
    this.con.query("SELECT sender_id,first_name,last_name,creation_date " +
        "FROM USER " +
        "WHERE sender_id = '" + senderId + "'",
        function (err, result, fields) {
            if (err) throw err;
            console.log(result);
        });
}
dly7yett

dly7yett1#

在每个请求上创建和断开数据库连接将降低每个请求的响应时间,从而影响总体性能。您应该考虑使用https://www.npmjs.com/package/mysql#pooling-连接。连接池将应用程序与诸如服务器由于缺少活动而终止空闲连接之类的情况隔离开来。

j13ufse2

j13ufse22#

"use strict"
    const mysql = require("mysql");

    class DB {
      constructor() {
        this.conn = mysql.createConnection({
          host: 'localhost',enter code here
          user: 'root',
          password: 'pass',
          database: 'db_name'
        });
      }

      connect() {
        this.conn.connect(function (err) {
          if (err) {
            console.error("error connecting: " + err.stack);
            return;
          }
          console.log("connected to DBB");
        });
      }

      checkQuery(id) { 

        try {
          this.conn.query(`SELECT * FROM tablename WHERE id = ${id}`, function (err, result) {
            if (err) {
              console.log('err');
              throw err;
            } else {
              console.log(result);

            }
          });
        } catch (e) {
          console.log('Exception caught in checkQuery()', e)
        }
      }

module.exports = DB
var obj = new DB();
obj.checkQuery(2);
zte4gxcn

zte4gxcn3#

对于您的问题,您可以访问此文档https://www.npmjs.com/package/mysql#pooling-连接。
而不是每次一次又一次地对mysql进行查询。还需要记住什么时候关闭连接,什么时候打开是一个相当麻烦的任务。你可以使用sequelizehttp://docs.sequelizejs.com/ (orm)。这将帮助您摆脱所有这些痛苦,并让您专注于业务逻辑,而不是出现技术错误。
谢谢!

相关问题