createConnection如何与mysql中的nodeJS一起使用?
createConnection是做什么的?
var connection = mysql.createConnection({ host : 'example.org', user : 'bob', password : 'secret' });
我正在使用mysql模块在nodeJS中编写应用程序。 我有一些自己的模块,例如authentication
,它们定义需要数据库连接。 问题是:如果我有多个模块,我使用这个方法来创build连接,它是否会为我创build一个新的连接或使用第一个? 如果创build,它创build它第一次加载我自己的模块或每次? 哦,如果它创造什么时候会被摧毁?
以下是我在authentication
模块中的使用方法:
var config = require('./config.js'); var mysql = require('mysql'); var connection = mysql.createConnection(config.connectionString); exports.login = function() ...
我对模块和自己的模块如何工作有一些基本的理解错误。
感谢您的答案。
您可以在一个模块中创build一个连接池,然后在所有模块中共享该池,并在需要时调用pool.createConnection()。 这可能比保持一个单独的,共享的连接总是开放的更好。
我正在做的一个项目是这样的:
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.createConnection(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;
每次你调用connection.connect()
它都会创build一个新的连接。 当程序退出时连接被销毁,或者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的文件将重新使用现有的连接。