NodeJS 在不同的模块里创建数据库连接,是各自创建一个连接吗?怎么共用同一个连接?

2018-09-28 10:59:41 +08:00
 nyse

database.js 数据库共用模块

const mysql = require('mysql');

let config = {...}

function connect (conf = config) {
    let conn = mysql.createConnection(conf);
    conn.connect(function (err) {
        if (err) {
            console.log(err);
        } else {
            console.log('Connected to database.')
            return conn;
        }
	});
}

module.exports = {
	connect: connect
}

module1.js module2.js 假如都是这样

const mysql = require('./database');

mysql.connect();

是不是创建了两个 MySQL 连接,如果过一段时间不用数据库操作,是不是会有断开的情况。

怎样才能共用一个连接,一方面可以减少数据库的连接数,另一方面断开连接的时候重新连接的逻辑可以共用。 难道把它放到全局变量?

2677 次点击
所在节点    Node.js
2 条回复
icris
2018-09-28 11:22:27 +08:00
module.exports = {
connPool: mysql.createPool(config)
}
require('./database'). getConnection((err, conn) => conn.release())
jerry4718
2018-10-05 00:10:05 +08:00
单例模式

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/493444

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX