关于node.js mySQL模块中的connection.end()如何工作的困惑

时间:2018-06-26 04:30:13

标签: javascript mysql sql node.js angular

const mysql = require('mysql'); 
let connection = mysql.createConnection(...);
        connection.connect((err)=>{
           ...
           connection.query((err)=>{
           ...
           connection.end();});
        });

我使用关闭连接后

  

connection.end()

,如果我想使用相同的凭据再次查询数据库,是否需要通过调用来建立新连接

  

mysql.createConnection(...)

或者我可以通过简单地调用

来重用相同的连接
  

connection.connect(...)

一些背景知识:我正在将angular / node.js应用程序部署到共享的托管网站,并且该虚拟主机最大限制为25个并发连接到mySQL数据库,因此我需要确保关闭连接在用户执行查询后正确显示。我不确定在关闭该连接后是否可以重用mysql.createConnection(...)创建的连接,还是需要创建一个全新的连接。

1 个答案:

答案 0 :(得分:1)

您可以使用一个全局连接从db获取数据。

如果您处理单个文件,则可以写为

app.js仅一个文件

 var mysql      = require('mysql');
 var connection = mysql.createConnection(...);

    connection.query('SELECT 1', function (error, results, fields) {
     if (error) throw error;
   // connected!
  });

如果要在多个文件中使用相同的连接,而不能写为
app.js

 app.use(  
    connection(mysql, {
         host: xxxxx, 
         user: 'root',
         password : xxxx, 
         port : 3306, 
         database:dbname

     },'pool'),  
   );

  var oem = require('./routes/type');
  app.get('/api/oemtype',oem.type);

对于第二个文件 type.js

   exports.type = function(req, res){

     req.getConnection(function(err,connection){

      var query = connection.query('SELECT * FROM type',function(err,rows)
      {
          if(err)
          res.json({
            status:0
        });

              res.send(rows);
         res.render('customers',{page_title:"Customers - Node.js",data:rows});


       });

  });

   };

无需使用connection.end()。