【问题标题】:Prisma 2: Connecting record to implicit many to many tablePrisma 2:将记录连接到隐式多对多表
【发布时间】:2021-09-11 03:09:31
【问题描述】:

我正在使用 Prisma 2,并且在连接模型上的现有记录时遇到问题,该模型与连接的模型具有隐含的多对多关系。

schema.prisma

model Event {
    id              Int             @id @default(autoincrement())
    performers      Performer[]
}

model Performer {
    id              Int             @id @default(autoincrement())
    events          Event[]
}

运行 prisma 迁移后,我可以在 postgres 中看到我确实创建了一个名为 _EventToPerformer 的连接表。我在我的数据库中创建了一些表演者,当我尝试创建一个事件并连接那些现有的表演者时,我无法做到。

const performers = await prisma.performer.findMany()

const event = await prisma.event.create({
      data: {
        performers: performers.map((p) => ({ id: p.id })),
      },
      include: {
        performers: true,
      },
  });

对于上面的代码,我在传递给 create 函数的对象的 data 属性上遇到了相当神秘的打字稿错误。当我使用@ts-ignore 抑制时,我收到这些棱镜客户端错误:

Unknown arg `performers` in data.performers for type EventUncheckedCreateInput. Available args:

type EventUncheckedCreateInput {
      id?: Int
    }

在建立隐式多对多关系和/或将现有记录附加到这些模型时,我是否遗漏了什么明显的东西?

【问题讨论】:

    标签: postgresql prisma


    【解决方案1】:

    您缺少connect。所以你的代码应该是这样的:

    const performers = await prisma.performer.findMany()
    
    const event = await prisma.event.create({
          data: {
            performers: {
              connect: performers.map((p) => ({ id: p.id })),
            }
          },
          include: {
            performers: true,
          },
    });
    

    您可以阅读有关处理关系的更多信息here

    【讨论】:

      猜你喜欢
      • 2021-07-25
      • 1970-01-01
      • 1970-01-01
      • 2022-12-04
      • 2021-05-03
      • 2023-03-09
      • 2022-01-27
      • 1970-01-01
      • 2011-02-03
      相关资源
      最近更新 更多