有没有一种方法可以使用嵌套的create在批处理中更新对象

时间:2019-04-07 16:51:59

标签: node.js graphql prisma prisma-graphql

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事务与prismaa客户端一起使用,并且如果任何更新失败都会进行回滚?

1 个答案:

答案 0 :(得分:0)

Prisma客户端确实会生成id_in过滤器: Prisma Id_in demo

话说回来,我们的prisma有一个新的规范,它将使更好的批处理和交易功能成为可能。参见:https://github.com/prisma/rfcs/blob/new-ts-client-rfc/text/0000-new-ts-client.md