Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js Prisma2:如何设计与数组类型模型相关的模式?_Node.js_Database_Database Design_Graphql_Prisma2 - Fatal编程技术网

Node.js Prisma2:如何设计与数组类型模型相关的模式?

Node.js Prisma2:如何设计与数组类型模型相关的模式?,node.js,database,database-design,graphql,prisma2,Node.js,Database,Database Design,Graphql,Prisma2,我在设计模式时遇到了一些问题 案例1: model User { package: @relation(fields: [authorId], references: [id]) packageId: Int } model Package { user User[] } 一个软件包可以被数百个用户订阅。所以,我认为这是一条路要走。但是,问题是,当一个包需要被删除时,用户(管理员)也需要被删除。这是我们不想要的 案例2: model User { package Packag

我在设计模式时遇到了一些问题

案例1:

model User {
  package: @relation(fields: [authorId], references: [id])
  packageId: Int
}

model Package {
  user User[]
}
一个软件包可以被数百个用户订阅。所以,我认为这是一条路要走。但是,问题是,当一个包需要被删除时,用户(管理员)也需要被删除。这是我们不想要的

案例2:

model User {
  package Package[]
}

model package {
  author      User?  @relation(fields: [authorId], references: [id])
  authorId    Int?
}
通过这种方式设计,当删除包时,用户不会被删除。
但是我不能将多个用户连接到一个包。

我认为必须从双方显式地建立关系模型,才能获得一个完整的解决方案。毕竟,所有用户都可以订阅多个软件包,软件包可以有多个用户订阅

model User {
  id Int @id @default(autoincrement())
  packages Package[] @relation(references: [id])
}

model Package {
  id Int @id @default(autoincrement())
  user User[] @relation(references: [id])
}