在node expess app中使用node mysql建立共享连接

xbp102n0  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(403)

目前我不使用连接池在我的设置,因为我只有1-4个用户在应用程序中。
根据医生的说法,这是推荐的方法。

var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'example.org',
  user     : 'bob',
  password : 'secret'
});

connection.connect(function(err) {
  if (err) {
    console.error('error connecting: ' + err.stack);
    return;
  }

  console.log('connected as id ' + connection.threadId);
});

现在,我所做的是导出连接对象并将其共享给其他api资源。
在db.js文件上

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

module.exports = connection;

在api.js文件上

const express = require('express');
const router = express.Router();

const conn = require('./db');

router.post('/create', function (req, res) {
    connection.query('INSERT ...', function (error, results, fields) {
        if (error) throw error;
        // connected!
    });
});

router.post('/update', function (req, res) {
    connection.query('UPDATE SET ...', function (error, results, fields) {
        if (error) throw error;
        // connected!
    });
});

同样地,这些示例中省略的其他api资源也是如此。。
这种连接设计有什么缺点?

pxy2qtax

pxy2qtax1#

如果我错了,请纠正我。我认为,即使您导出了连接对象,您仍然在一个接一个地管理连接。
为每个用户打开和维护一个数据库连接,特别是对动态数据库驱动的网站应用程序的请求,代价高昂,浪费了维基百科的资源
从同一个医生那里,
这是因为对pool.query()的两个调用可能使用两个不同的连接并并行运行
因此,最好的方法是使用池来管理连接
连接是由池延迟创建的。如果将池配置为最多允许100个连接,但仅同时使用5个,则只会建立5个连接。连接也是循环循环式的,连接从池的顶部开始,然后返回到池的底部。
希望有帮助。

相关问题