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

Javascript 关于connection.end()在node.js mySQL模块中如何工作的困惑,javascript,mysql,sql,node.js,angular,Javascript,Mysql,Sql,Node.js,Angular,在我使用关闭连接之后 connection.end() ,如果要使用相同的凭据再次查询数据库,是否需要通过调用 createConnection(…) 或者我可以通过简单地调用来重用相同的连接吗 连接。连接(…) 一点背景:我正在将angular/node.js应用程序部署到一个共享托管网站,而该网站的主机最多有25个到mySQL数据库的并发连接,因此我需要确保在用户执行查询后正确关闭连接。我不确定是否可以在关闭mysql.createConnection(…)后重新使用该连接,或者是否需要创建

在我使用关闭连接之后

connection.end()

,如果要使用相同的凭据再次查询数据库,是否需要通过调用

createConnection(…)

或者我可以通过简单地调用来重用相同的连接吗

连接。连接(…)


一点背景:我正在将angular/node.js应用程序部署到一个共享托管网站,而该网站的主机最多有25个到mySQL数据库的并发连接,因此我需要确保在用户执行查询后正确关闭连接。我不确定是否可以在关闭mysql.createConnection(…)后重新使用该连接,或者是否需要创建一个全新的连接。

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

如果您处理的是单个文件,那么您可以编写为

app.js仅一个文件

const mysql = require('mysql'); 
let connection = mysql.createConnection(...);
        connection.connect((err)=>{
           ...
           connection.query((err)=>{
           ...
           connection.end();});
        });
如果要在多个文件中使用相同的连接,则可以编写为
app.js

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

    connection.query('SELECT 1', function (error, results, fields) {
     if (error) throw error;
   // connected!
  });
 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

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

    connection.query('SELECT 1', function (error, results, fields) {
     if (error) throw error;
   // connected!
  });
 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);

无需使用connection.end()。

我正在部署我的应用程序的web主机最多可以同时连接25个mySQL数据库。不调用connection.end()会不会让连接挂起,从而导致最大限度的问题?如果每次都结束连接,那么mysql每次创建新连接都会降低应用程序和mysql的性能。最好使用池连接。池是否为所有用户创建单个池?例如,如果我将connectionLimit设置为25(如var pool=mysql.createPool({connectionLimit:10,host:…});这将为每个用户创建25个连接池,还是为所有用户创建25个连接池?很抱歉延迟,将为所有25个用户创建连接池,而不是为每个用户。您可以使用connection.release()而不是end mehod查询工作完成后。检查此项谢谢!这对我来说是新知识,我将自己做更多的研究:)您将需要一个池。将其配置为不使用超过25个连接。