繁体   English   中英

断开 Prisma 中的多对多关系 + MySQL

[英]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,它应该会向您提供有关正在发生的事情的特定错误。 如果不是这样,那么当您尝试运行操作时,命令行应该会给您错误。

文档: https://www.prisma.io/docs/concepts/components/prisma-client/relation-queries#disconnect-a-related-record

“断开连接”操作不能断开深层嵌套关系。 它只会断开直接连接到有问题的 model 的文档。 在您的情况下,您只能断开UserOnListList的连接,但不能在同一操作中也断开UserUserOnList的连接。

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM