[英]Disconnecting Many-to-Many Relationships in Prisma + MySQL
我完全迷路了。 我有一个明确的多对多关系:用户可以有多个列表,但列表可以由多个用户拥有:
model List {
id String @id @default(cuid())
title String
users UsersOnLists[]
}
model User {
id String @id @default(cuid())
name String
lists UsersOnLists[]
}
model UsersOnLists {
id String @id @default(cuid())
order Int
user DictItem? @relation(fields: [userId], references: [id])
userId String?
list List? @relation(fields: [ListId], references: [id])
listId String?
}
现在我想将列表连接到用户:
prisma.list.update({
where: {
id: input.id
},
data: {
users: {
create: [{
order: 123,
user: {
connect: {
id: "abcd-123",
}
}
}],
}
}
});
这行得通。
但是,我不知道 go 如何断开 prisma 中的多对多关系? 假设我想再次断开用户与列表的连接? 我该怎么做?
prisma.list.update({
where: {
id: input.id
},
data: {
users: {
disconnect: [{
user: {
disconnect: {
id: "abcd-123",
}
}
}],
}
}
});
这是行不通的。
我在 prisma 文档中也找不到太多关于断开连接的信息。 有任何想法吗?
我想我可以直接从关系表中删除该行,但这感觉不那么干净,我想我仍然会在用户和列表表中保留旧 ID? 如果这是推荐的方法,我更愿意使用disconnect
。
您收到特定错误了吗? 如果您使用带有 TypeScript 提示的代码编辑器/IDE,它应该会向您提供有关正在发生的事情的特定错误。 如果不是这样,那么当您尝试运行操作时,命令行应该会给您错误。
“断开连接”操作不能断开深层嵌套关系。 它只会断开直接连接到有问题的 model 的文档。 在您的情况下,您只能断开UserOnList
与List
的连接,但不能在同一操作中也断开User
与UserOnList
的连接。
prisma.list.update({
where: {
id: input.id
},
data: {
users: {
disconnect: [{
id: "ID_OF_UsersInList_MODEL_HERE"
}],
}
}
});
另外 - 您不需要UsersInList
表。 如果您不需要关于 model 的任何额外信息或数据,Prisma 可以在后台为您管理“连接”表。如果您希望 Prisma 自行管理此表,请查看此处的文档: https://www .prisma.io/docs/concepts/components/prisma-schema/relations/多对多关系
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.