首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Node.js
Express
PPA for Ubuntu
ppa:chris-lea/node.js
拉勾
V2EX  ›  Node.js

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

  •  
  •   nyse · 171 天前 · 629 次点击
    这是一个创建于 171 天前的主题,其中的信息可能已经有所发展或是发生改变。

    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 连接,如果过一段时间不用数据库操作,是不是会有断开的情况。

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

    2 回复  |  直到 2018-10-05 00:10:05 +08:00
        1
    icris   171 天前
    module.exports = {
    connPool: mysql.createPool(config)
    }
    require('./database'). getConnection((err, conn) => conn.release())
        2
    jerry4718   165 天前
    单例模式
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   3916 人在线   最高记录 4385   ·  
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 17ms · UTC 01:37 · PVG 09:37 · LAX 18:37 · JFK 21:37
    ♥ Do have faith in what you're doing.
    沪ICP备16043287号-1