搜索

首页  >  问答  >  正文

Prisma如何用不同的数据更新多行

使用不同数据更新许多记录的最佳方法是什么? 我就是这样做的

const updateBody = JSON.parse(req.body);

      try {
        for (let object of updateBody) {
          await prisma.comissions.upsert({
            where: {
              producer: object.producer,
            },
            update: {
              rate: object.rate,
            },
            create: object,
          });
        }

我可以更新它,但需要很长时间才能完成。我知道 transaction,但我不知道如何使用它。

P粉478445671P粉478445671377 天前627

全部回复(1)我来回复

  • P粉354602955

    P粉3546029552023-12-26 09:37:44

    在 Prisma 中事务查询有两种使用方式。

    顺序操作:传递要在事务内顺序执行的 Prisma 客户端查询数组。

    交互式交易:传递一个函数,该函数可以包含用户代码,包括 Prisma 客户端查询、非 Prisma 代码以及要在交易中执行的其他控制流。

    在我们的例子中我们应该使用交互式交易,因为它包含用户代码,要在Prisma交易中使用回调函数,我们需要向Prisma.schema文件添加预览功能

    generator client {
      provider        = "prisma-client-js"
      previewFeatures = ["interactiveTransactions"]
    }
    prisma.$transaction(async(prisma) => {
      try {
            for (let object of updateBody) {
              await prisma.comissions.upsert({
                where: {
                  producer: object.producer,
                },
                update: {
                  rate: object.rate,
                },
                create: object,
              });
            }
    });

    回复
    0
  • 取消回复