使用Promise同时运行超过12个事务.抛出错误



我有一个函数为我的api使用$transaction里面。我正在使用Vitest进行测试,为了模拟请求,我使用Promise运行了该函数20次。所有,像这样:

<编辑>
const verifyEmail = (data) => {
return prisma.$transaction(async tx => {
// some reading
// some updaing
})
}
<编辑>测试
test("run verifyEmail multiple times", async () => {
await Promise.all(myCredentials.map(data => verifyEmail(data)))
})

和我得到的错误:

Transaction API error: Unable to start a transaction in the given time.

如果myCrendentials只有12个项目,我不会得到错误。但是如果项目增加到12个以上,prisma抛出上述错误。知道为什么会这样吗?

注。增加超时时间和maxWait没有帮助

编辑:我想我找到问题了。我正在prism中间件中进行一些查询。所以它抛出这个错误,因为中间件内部的查询在事务中使用主prism客户端BUT。仍然搜索…

找到问题。我在Prisma中间件中有一些额外的查询。当我在事务中更新我的记录时,中间件使事务变得比它应该的要重得多。

所以,我想出了创建一个util函数,而不是直接在事务内部执行过程。现在我可以一次运行~1000个事务