我在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();
},
有人可以推荐一种方法来整理一下并减少冗余代码吗?
答案 0 :(得分:0)
创建一次连接并将其传递给模块导出。
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
});