首頁  >  問答  >  主體

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粉478445671299 天前535

全部回覆(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
  • 取消回覆