Open1

PrismaのCRUD操作

MygMyg

参考:
https://www.prisma.io/docs/orm/prisma-client/queries/crud#update

PrismaのCRUD操作には、create、update、find、deleteがある。
createMany()などで、複数のデータを操作することもできる。

注意点:
updateMany()に配列を渡すとする。
ex

const exArr = [{id:1,name:"a"},{id:2,name:"i"},{id:3,name:"u"}]
  try {
    const data = await prisma.ex.updateMany({
      data: exArr,
    });
    return c.json({ data: data });
  } catch (e) {
    return c.json({ error: e });
  }

上記はエラーになる。
Prismaを使用して複数のオブジェクトを一度に更新する場合、updateManyメソッドは特定の条件に一致する複数のレコードを同じデータで更新するために設計されている。そのため、異なるデータを持つ複数のオブジェクトを更新する場合は、updateManyを直接使用することはできない。

そこで、個別に更新する必要がある。  
各オブジェクトを個別に更新するために、forEachやPromise.allを使用して非同期処理を行う方法

  try {
    const updatePromises = exArr.map(async (ex) => {
      return await prisma.ex.update({
        where: { id: ex.id }, // 各オブジェクトのIDを指定
        data: { ...ex }, // 更新するデータ
      });
    });

    const updatedData = await Promise.all(updatePromises);
    return c.json({ data: updatedData });
  } catch (e) {
    return c.json({ error: e.message });
  }