Как я могу удалить элементы, имеющие отношения?

Я использую 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
}

Пользователь-команда - это отношения 1:n. Членство в команде - это отношения 1:n.

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

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

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

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

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

1 ответ

Решение

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

Основываясь на вашей модели, я считаю, что вам нужно обновить схемы graphql, чтобы обрабатывать либо CASCADE на SET_NULL для отношений onDelete.

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

Другие вопросы по тегам