问题复现详见 Prisma#9465
首先我们有一个 orders 数组
const orders = [
{ id: 2, order: 5 },
{ id: 3, order: 4 },
];
我想做每次都按照 id 查询然后修改值的操作。由于是异步,很自然地想到了Promise.all
await Promise.all(
orders.map(({ id, order }) => {
return prisma.friend.update({
where: { id },
data: { order },
});
}),
);
然后就抛 Error 了
Error:
Invalid `prisma.friend.update()` invocation:
Error occurred during query execution:
ConnectorError(ConnectorError { user_facing_error: None, kind: ConnectionError(Timed out during query execution.) })
于是我就想到了orders.forEach
,但是forEach 也是同步的
所以正解应该用for
for (const { id, order } of orders) {
await prisma.friend.update({
where: { id },
data: { order },
});
}