有没有办法使用嵌套创建批量更新棱镜中的对象

Posted

技术标签:

【中文标题】有没有办法使用嵌套创建批量更新棱镜中的对象【英文标题】:Is there a way to batch update objects in prisma using a nested create 【发布时间】:2019-08-28 21:30:13 【问题描述】:
prisma v1.28.3,
nodeJs: v10.15.3

假设我们有以下棱镜定义

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 有一个新规范,它将实现更好的批处理和事务功能。见:https://github.com/prisma/rfcs/blob/new-ts-client-rfc/text/0000-new-ts-client.md

【讨论】:

以上是关于有没有办法使用嵌套创建批量更新棱镜中的对象的主要内容,如果未能解决你的问题,请参考以下文章

批量更新后更新托管对象上下文中的托管对象

批量更新猫鼬对象中的数组

NHibernate中的批量更新

JPA的批量更新会触发TransactionalEventListener吗?

使用同上的批量 CRUD

使用Conda [Anaconda]批量更新包裹