如何使用Node JS和mssql切换连接

我有一个情况,我需要查询多个SQL Server来获取一堆数据。 所以,我首先遍历SQL Server,然后迭代必须运行的查询。 在我的调用者函数中,我有下面的代码

config.servers.forEach((element) => { sqlServer = element.server; element.queries.forEach(function(configQuery) { jsonKey = configQuery.key; sqlQuery = configQuery.query sqlDatabase = configQuery.database; var out; if (configQuery.parameter) { sqlQuery = sqlQuery + " WHERE " + configQuery.parameter + " = '" + partNumber + "'"; } sqlHelper.sqlFun(sqlQuery, sqlServer, sqlDatabase, jsonKey, callback) }) 

sqlFun参照下面的函数

 let connection ; function poolIt (sqlQuery,sqlServer,databaseName) { if(!connection) { //sqlServer_temp = sqlServer //instead of checking if connection is defined //we have to check if connection is open var dbConfiguration = { driver: 'msnodesqlv8', server: sqlServer, database: databaseName, options: { trustedConnection: true } } connection = sql.connect(dbConfiguration); } } function runQuery(sqlQuery,sqlServer,databaseName,sqlKey, callback) { poolIt(sqlQuery,sqlServer,databaseName) connection.then(pool =>{ return pool.request().query(sqlQuery) }).then(result=>{ if(callback) return callback(null,result.recordset, sqlKey ) }).catch(err=>{ if(callback) { console.log(err) return callback(err,null, sqlKey) } }) } module.exports.sqlFun = runQuery; 

我面对的问题是,对于我试图build立的所有SQL Server连接,所有这些连接都连接到相同的SQL Server。 我明白,这是由于function池,因为我在那里检查是否存在连接,如果存在,我刚刚出来的循环。 我想知道如何closures这个连接,一旦我完成了在我的迭代中执行查询与第一个SQL Server? 我试过sql.close()和connection.close(),但他们不工作。 如果我使用它们,程序会挂起很长时间。