путаница в том, как connection.end () работает в модуле mySQL node.js

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

После закрытия соединения, используя

connection.end()

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

mysql.createConnection(...)

Или я могу повторно использовать одно и то же соединение, просто позвонив

connection.connect(...)

Немного о себе: я размещаю приложение углового /node.js на общедоступном веб-хостинге, а веб-хост имеет максимум 25 одновременных подключений к базе данных mySQL, поэтому мне нужно убедиться, что я правильно закрываю соединение после пользователь делает свой запрос. Я не уверен, могу ли я повторно использовать соединение, созданное mysql.createConnection(...) после закрытия этого соединения, или мне нужно создать совершенно новое соединение.

  • 0
    Вы хотите бассейн. Настройте его, чтобы не использовать более 25 подключений.
Теги:
angular

1 ответ

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

  • 0
    Веб-хост, на котором я развертываю свое приложение, имеет максимальный лимит в 25 одновременных подключений к базе данных mySQL. Не вызовет ли connection.end () соединение висячим, что приведет к проблемам с максимальным пределом?
  • 0
    Читать этот пост может вам помочь: github.com/mysqljs/mysql
Показать ещё 5 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню