IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    Prisma 多次操作导致的连接器超时问题解决

    Jsun Dot LOL发表于 2021-10-02 09:38:14
    love 0

    问题复现详见 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 },
      });
    }
    


沪ICP备19023445号-2号
友情链接