путаница в том, как connection.end () работает в модуле mySQL node.js - PullRequest
0 голосов
/ 26 июня 2018
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 голосов
/ 26 июня 2018

Вы можете использовать одно глобальное соединение для получения данных из базы данных.

Если вы работаете с одним файлом, вы можете записать как

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 ().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...