// 我想用一个模块直接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
};
↧
node使用mssql创建一个全局连接池的疑问
↧