nyse
V2EX  ›  Node.js

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

  •  
  •   nyse · Sep 28, 2018 · 3519 views
    This topic created in 2791 days ago, the information mentioned may be changed or developed.

    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 replies    2018-10-05 00:10:05 +08:00
    icris
        1
    icris  
       Sep 28, 2018
    module.exports = {
    connPool: mysql.createPool(config)
    }
    require('./database'). getConnection((err, conn) => conn.release())
    jerry4718
        2
    jerry4718  
       Oct 5, 2018
    单例模式
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3177 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 11:37 · PVG 19:37 · LAX 04:37 · JFK 07:37
    ♥ Do have faith in what you're doing.