createConnection 如何与 mysql 中的 nodeJS 一起使用?

how does createConnection work with nodeJS in mysql?

createConnection 有什么作用?

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

我正在使用 mysql 模块在 nodeJS 中编写应用程序。我有一些自己的模块,例如 authentication,它肯定需要数据库连接。问题是:如果我在多个模块中使用此方法创建连接,它会每次都为我创建一个新连接还是使用第一个?如果创建,它会在第一次加载我自己的模块时创建还是每次都创建?哦,如果它创造了,它什么时候会被摧毁?

这是我在 authentication 模块中的方式:

var config = require('./config.js');
var mysql = require('mysql');
var connection = mysql.createConnection(config.connectionString);

exports.login = function() ...

我对模块和自己的模块的工作原理有一些基本的理解缺失。

感谢您的回答。

它会在您每次调用 connection.connect() 时创建一个新连接。 当程序退出或调用 connection.end() 时,连接将被破坏。如果要重用连接,可以将连接逻辑放在一个单独的模块中,然后只导出连接本身,就像这样。

在名为 connection.js

的文件中
var mysql = require("mysql");
var connection = mysql.createConnection({
  host     : 'localhost',
  user     : 'user',
  password : 'password'
});
connection.connect();
module.exports = connection;

然后在任何客户端文件中:

var connection = require("./connection.js");
connection.query('some query', callback);

需要的每个文件 connection.js 将重用现有连接。

您可以在一个模块中创建一个连接池,然后在所有模块之间共享该池,并在需要时调用 pool.getConnection()。这可能比始终打开一个共享连接要好。

我正在做的一个项目就是这样做的:

utils/database.js

var mysql = require('mysql');

var pool = mysql.createPool({
    connectionLimit: 100,
    host: 'localhost',
    user: 'xxxxx',
    password: 'yyyyy',
    database: 'zzzzz',
    debug: false
});

module.exports = pool

accounts.js

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

var pool = require('./utils/database');

router.get('/', function(req, res) {

    pool.getConnection(function(err, connection) {

        // do whatever you want with your connection here

        connection.release();

    });
});

module.exports = router;

我正在尝试的另一种方式是这样的:

utils/database.js

var mysql = require('mysql');

var pool = mysql.createPool({
    connectionLimit: 100,
    host: 'localhost',
    user: 'xxxxx',
    password: 'yyyyy',
    database: 'zzzzz',
    debug: false
});

var getConnection = function(callback) {
    pool.getConnection(function(err, connection) {
        callback(err, connection);
    });
});

module.exports = getConnection;

accounts.js

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

var createConnection = require('./utils/database');

router.get('/', function(req, res) {

    createConnection(function(err, connection) {

        // do whatever you want with your connection here

        connection.release();

    });
});

module.exports = router;