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() ...
我对模块和自己的模块如何工作有一些基本的了解。
感谢您的回答。
答案 0 :(得分:6)
您可以在一个模块中创建连接池,然后在所有模块中共享该池,并在需要时调用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;
答案 1 :(得分:3)
每次拨打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的每个文件都将重用现有连接。