Есть ли способ пакетного обновления объектов в prisma с использованием вложенного create

#node.js #graphql #prisma #prisma-graphql

#node.js #graphql #prisma #prisma-graphql

Вопрос:

 prisma v1.28.3,
nodeJs: v10.15.3
  

Допустим, у нас есть следующие определения prisma

 type ScheduledCharge {
 processedAt: DateTime!
 transactions: [Transaction!]!
}

type Transaction {
 id: ID! @unique
 amount: number
}
  

Теперь, учитывая, что у нас есть коллекция ScheduledCharge , есть ли способ, которым я мог бы выполнить пакетное обновление ScheduledCharge с созданием вложенного объекта, в идеале что-то вроде этого

 prisma.updateManyScheduledCharges({
  where: {
    id_in: [1, 2, 3]
  },
  data: {
    transactions: {
      create: [{
        amount,
      }]
    }
  },
})
  

Но упомянутое выше не генерируется клиентом prisma, однако я мог бы выполнить цикл сбора запланированных платежей и выполнить следующее

 for (const { id: scheduledChargeId } of scheduledCharges) {
  prisma.updateScheduledCharge({
    where: {
      id: scheduledChargeId
    },
    data: {
      transactions: {
        connect: [{
          id: transactionId,
        }]
      }
    },
  })
}
  

Если я сделаю упомянутое выше, кто-нибудь знает, могу ли я использовать транзакции MySQL с клиентом prisma и выполнить откат, если какое-либо из обновлений не удалось?

Ответ №1:

Клиент Prisma действительно генерирует id_in фильтр: Prisma Id_in demo

При этом у prisma появилась новая спецификация, которая позволит улучшить функциональность пакетной обработки и транзакций. Смотрите: https://github.com/prisma/rfcs/blob/new-ts-client-rfc/text/0000-new-ts-client.md