Quantcast
Channel: CNode:Node.js专业中文社区
Viewing all articles
Browse latest Browse all 14821

node使用mssql创建一个全局连接池的疑问

$
0
0
// 我想用一个模块直接exports出来一个连接池pool,在别的地方直接使用这个pool不需要重新连接了
// 我目前的方案是使用了全局变量 global.pool  
/**
1 . 求教如果不使用全局变量还有什么方案可以做到呢,我尝试在dbpool.js 里面let 一个 pool做不到必须使用全局变量
2 . 顺便请教一个 try{}catch(err){}的问题   在try.catch中只要catch抓到错误了 后面的代码就不会执行,这是什么原因, 如果我还想继续执行怎么能做到呢
*/


//app.js: 这是入口文件
global.pool = null;
const sql = require('mssql');
const dbPool = require('./model/dbPool');
const test = require('./test');   //test.js只暴露了一个方法,和下面自执行函数中的代码相同

(async function () {
    let pool = await dbPool.getPool();
    try {
        let select = await pool.request()
            .input('appid', sql.VarChar, '12')
            .query('select * from weibo.T_Weibo_Followers where id = @appid');

        console.dir('app');
    } catch (err) {
        console.error(err);
    }
	// 在这里调用了test
    await test();
})();

// dbPool.js  暴露出来一个获取连接的方法
const dbConfig = require('../config').dbConfig;
const sql = require('mssql');

sql.on('error', async (err) => {
    global.pool = await sql.connect(dbConfig);
});

async function getPool() {
    if (global.pool) return global.pool;
    global.pool =  await sql.connect(dbConfig);
    return global.pool;
}
module.exports = {
    getPool
};


Viewing all articles
Browse latest Browse all 14821

Trending Articles