Search code examples
javascriptnode.jstypescriptormprisma

How is .upsertMany() implemented in Prisma ORM?


Prisma ORM has an implementation of the update or create upsert() method and a group of bulk requests,
but there is no such thing as .upsertMany(), i.e. bulk "create or update existing records".

What is the best way to implement such a method using Prisma ORM?


Solution

  • Prisma doesn't natively support upsertMany.

    There is a Feature Request to provide the upsertMany method.

    As of now the best approach would be to loop over the data and invoke upsert in the loop along with using $transaction.

    Example:

    const collection = await prisma.$transaction(
        userData.map(cur =>
          prisma.cur.upsert({
            where: { id: cur.id },
            update: {},
            create: { id: cur.id },
          })
        )
      )
    

    Here's a reference to $transaction API which should be helpful.