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

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

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

    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   79 天前
    module.exports = {
    connPool: mysql.createPool(config)
    }
    require('./database'). getConnection((err, conn) => conn.release())
        2
    jerry4718   73 天前
    单例模式
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1109 人在线   最高记录 4019   ·  
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.1 · 19ms · UTC 17:26 · PVG 01:26 · LAX 09:26 · JFK 12:26
    ♥ Do have faith in what you're doing.
    沪ICP备16043287号-1