最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

如何使用事务内部循环来运行多个存储过程?

运维笔记admin19浏览0评论

如何使用事务内部循环来运行多个存储过程?

如何使用事务内部循环来运行多个存储过程?

使用Nodejs和

我有多个存储过程,并希望异步运行,因为即将到来的迭代取决于之前的结果。

transaction.begin(async error => {
    try {
        let count = 0;

        transactions.forEach(t => {
            const request = new db.sql.Request(transaction);

            request.execute(t, (error, recordsets) => {
                console.log(error)
                if (recordsets && recordsets.returnValue !== 0) {
                    transaction.rollback();
                    return res.status(422).json([responses[recordsets.returnValue]]);
                }

                if (recordsets && recordsets.returnValue === 0 && transactions.length === count) {
                    transactionmit(tErr => tErr && next('transaction commit error'));
                    return res.status(200).json([responses[0]]);
                }
            });
            count++;
        });
    } catch (err) {
        transaction.rollback(
            tErr => tErr && done('transaction rollback error')
        );
    }
});

错误:

TransactionError:无法获取请求的连接。有另一个请求正在进行中。

transactions.forEach每次迭代应适用于request.execute的结果(回调)

回答如下:

最简单的选择是使用异步等待(https://www.npmjs/package/mssql#asyncawait)

然后您可以执行以下操作:

async function doWork() {
  let count = 0;

  for(const transaction of transactions) {
    const result = await execute(...);
    count++;
  }
}
发布评论

评论列表(0)

  1. 暂无评论