Как я могу удалить элементы, имеющие отношения?
Я использую 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/