Javascript 在承诺中释放MySQL连接

Javascript 在承诺中释放MySQL连接,javascript,mysql,node.js,promise,Javascript,Mysql,Node.js,Promise,我想释放MySQL池提供的连接。 在“for”循环中,连接被正确地释放,但是如果我使用Promise.All来异步执行,我会有一些未关闭的连接。 问题是,过了一会儿,我得到了错误“太多连接”,我不想增加最大连接数 您知道是否出于任何原因,MySQL连接不能在异步函数中释放吗 以下是我如何创建我的池: dbPool = mysql2.createPool(Object.assign({}, defaultDBConfig, { database: 'my_db,

我想释放MySQL池提供的连接。 在“for”循环中,连接被正确地释放,但是如果我使用Promise.All来异步执行,我会有一些未关闭的连接。 问题是,过了一会儿,我得到了错误“太多连接”,我不想增加最大连接数

您知道是否出于任何原因,MySQL连接不能在异步函数中释放吗

以下是我如何创建我的池:

dbPool = mysql2.createPool(Object.assign({}, defaultDBConfig, {
            database: 'my_db,
            waitForConnections: true,
            connectionLimit: 10,
            queueLimit: 0,
            multipleStatements: true,
            dateStrings: true
        }));
以下是我使用的函数:

/**
 * @description Allow to do a generic async forEach loop
 * @param {*} array
 * @param {*} callback
 */
async function asyncForEachPromised(array, callback) {
    await Promise.all(array.map(async (items) => {
        await callback(items);
    }));
最后,我使用了一个代码示例,在这种情况下,连接未发布:

const elements = [{prop1: 'a'},{prop1: 'b'}];
await asyncForEachPromised(elements, async (element) => {
    await executeQuery(dbPool, 'my query', 'my error message', [element.prop1]);
});
const elements = [{prop1: 'a'},{prop1: 'b'}];
for (const [,element] of elements.entries()) {
    await executeQuery(dbPool, 'my query', 'my error message', [element.prop1]);
}
但在这种情况下,它们被正确释放:

const elements = [{prop1: 'a'},{prop1: 'b'}];
await asyncForEachPromised(elements, async (element) => {
    await executeQuery(dbPool, 'my query', 'my error message', [element.prop1]);
});
const elements = [{prop1: 'a'},{prop1: 'b'}];
for (const [,element] of elements.entries()) {
    await executeQuery(dbPool, 'my query', 'my error message', [element.prop1]);
}

你不能那样做

试试这个

Promise.all( arr )
.then( results => //your code with results)
.finally( () => //close connection)
.catch( e => //do what you need )

但是。。。您应该尝试使用连接池。你用什么?mysql节点

您能否发布一个示例代码片段,以便我们更好地为您提供帮助?