Как я могу удалить элементы с отношениями? - PullRequest
0 голосов
/ 10 октября 2019

Я использую prisma2, и я не знаю, как удалить элементы, имеющие отношения с другими моделями.

Это мои модели.

model User {
  id       String @default(cuid()) @id
  email    String @unique
  password String
  name     String

  teams       Team[]
  memberships Membership[]
}

model Team {
  id        String   @default(cuid()) @id

  name        String
  founder     User?
  memberships Membership[]
}

model Membership {
  id        String   @default(cuid()) @id

  class    String

  owner User
  team  Team
}

User-Team is 1отношения. Членство в команде - это отношение 1: n.

И я хочу удалить команду.

Я пробовал это.

t.list.field("deleteTeam", {
  type: "Team",
  args: {
    teamid: idArg()
  },
  resolve: (_, { teamid }, ctx) => {
    return ctx.photon.teams.deleteMany({
      where: { id: teamid }
    });
  }
});

Но это не работает, потому чтонарушает отношение.

Как удалить команду, отключив все отношения одновременно?

1 Ответ

0 голосов
/ 10 октября 2019

При удалении с зависимыми отношениями обычно требуется указание каскадного удаления.

Исходя из вашей модели, я полагаю, вам необходимо обновить схемы graphql для обработки CASCADE на SET_NULL для отношений onDelete.

Я знаю, что в других системах, таких как 8base есть флаг force: Boolean, который можно указать, чтобы решить эту проблему. Однако вот раздел Prisma docs для вашей проблемы: https://prisma -docs.netlify.com / docs / 1.4 / reference / prisma-api / concepts-utee3eiquo / # cascading-deletes

...