在哪里放置MySQL连接以避免Node.js中的代码重复
我在Node.js中使用mysql
模块。在我的模型文件中,目前,我在每个方法中指定连接常量。然而,这占用了大量空间,我知道这并不理想。
这就是它的样子。
doSomething: () => {
var connection = mysql.createConnection({
host : config.database.host,
database : config.database.database,
user : config.database.user,
password : config.database.password
});
connection.query( ... );
connection.destroy();
},
doSomethingElse: () => {
var connection = mysql.createConnection({
host : config.database.host,
database : config.database.database,
user : config.database.user,
password : config.database.password
});
connection.query( ... );
connection.destroy();
},
任何人都可以推荐一种方法来整理一些东西并减少冗余代码吗?
回答如下:创建一次连接并将其传递给模块导出。
const mysql = require("mysql");
const conn = mysql.createConnection({
host: "localhost",
user: "root",
password: "",
database: "db"
});
module.exports = conn;
然后,您可以将其导入其他文件并使用它。
var dbConnection = require('./dbConnection');
dbConnection.query();
但是,我建议使用createConnection
而不是使用createPool
。
可以合并连接以简化共享单个连接或管理多个连接。
const mysql = require("mysql");
const conn = mysql.createPool({
host: "localhost",
user: "root",
password: "",
database: "db"
});
module.exports = conn;
你可以像这样使用它。从表中获取数据后,请确保release
连接:
var connectionPool = require('./dbConnection');
connectionPool.getConnection((err, connection) => {
connection.query('SELECT * FROM table', (error, result) {
connection.release();
if(error) throw error;
});
});
要关闭池中的所有连接:
connectionPool.end(function (err) {
// all connections in the pool have ended
});
在哪里放置MySQL连接以避免Node.js中的代码重复
我在Node.js中使用mysql
模块。在我的模型文件中,目前,我在每个方法中指定连接常量。然而,这占用了大量空间,我知道这并不理想。
这就是它的样子。
doSomething: () => {
var connection = mysql.createConnection({
host : config.database.host,
database : config.database.database,
user : config.database.user,
password : config.database.password
});
connection.query( ... );
connection.destroy();
},
doSomethingElse: () => {
var connection = mysql.createConnection({
host : config.database.host,
database : config.database.database,
user : config.database.user,
password : config.database.password
});
connection.query( ... );
connection.destroy();
},
任何人都可以推荐一种方法来整理一些东西并减少冗余代码吗?
回答如下:创建一次连接并将其传递给模块导出。
const mysql = require("mysql");
const conn = mysql.createConnection({
host: "localhost",
user: "root",
password: "",
database: "db"
});
module.exports = conn;
然后,您可以将其导入其他文件并使用它。
var dbConnection = require('./dbConnection');
dbConnection.query();
但是,我建议使用createConnection
而不是使用createPool
。
可以合并连接以简化共享单个连接或管理多个连接。
const mysql = require("mysql");
const conn = mysql.createPool({
host: "localhost",
user: "root",
password: "",
database: "db"
});
module.exports = conn;
你可以像这样使用它。从表中获取数据后,请确保release
连接:
var connectionPool = require('./dbConnection');
connectionPool.getConnection((err, connection) => {
connection.query('SELECT * FROM table', (error, result) {
connection.release();
if(error) throw error;
});
});
要关闭池中的所有连接:
connectionPool.end(function (err) {
// all connections in the pool have ended
});