IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

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

    without-yy发表于 2017-03-30 02:10:53
    love 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
    };
    
    


沪ICP备19023445号-2号
友情链接