Prisma 2:将记录连接到隐式多对多表

时间:2021-06-28 20:30:19

标签: postgresql prisma

我正在使用 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 进行抑制时,我收到了这些 Prisma 客户端错误:

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

type EventUncheckedCreateInput {
      id?: Int
    }

在设置隐式多对多关系和/或将现有记录附加到这些模型时,是否有任何明显的遗漏?

1 个答案:

答案 0 :(得分:1)

您缺少一个 this.cities.splice(0, 1); this.cities = [...this.cities]; 。所以你的代码应该是这样的:

this.cities = this.cities.slice(1);

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