删除 Prisma 自引用(一对多)

问题描述 投票:0回答:1

我有这个棱镜模式

model Directory {
  id                String      @id @default(cuid())
  name              String?
  parentDirectoryId String?
  userId            String
  parentDirectory   Directory?  @relation("parentDirectoryId", fields: [parentDirectoryId], references: [id], onDelete: NoAction, onUpdate: NoAction)
  user              User        @relation(fields: [userId], references: [id], onDelete: Cascade)
  quizess           Quiz[]
  subDirectory      Directory[] @relation("parentDirectoryId")

  @@index([parentDirectoryId])
  @@index([userId])
}

背后的逻辑: 我可以有一个位于根目录 (parentDirectoryId = null) 的文件夹,也可以有许多其他目录。

如何删除其中包含目录的目录?

这就是我尝试调用 prisma.delete 时发生的情况:

Invalid 
prisma.directory.delete()`调用:

您尝试进行的更改将违反

Directory
Directory
模型之间所需的关系“parentDirectoryId”。`

设置onDelete: Cascade、onUpdate: Cascade 不起作用

javascript typescript prisma self-reference self-referencing-table
1个回答
0
投票

试试这个:

prisma.directory.update({
   data: {
           subDirectory: {
               disconnect: {
                   id: directory.id,
               } 
            },
          },
})

directory.id
是父目录的id。

© www.soinside.com 2019 - 2024. All rights reserved.