如何在Prisma中为同一文件创建多个关系

时间:2019-03-08 10:43:09

标签: prisma prisma-graphql

这是我的datamodel.prisma文件的相关部分。

type Driver {
  id: ID! @unique
  zones: [Zone!] @relation(name: "DriverZones")
  shifts: [Shift!] @relation(name: "DriverShifts")
  preferredZone: Zone
  preferredShift: Shift
}


type Shift {
  id: ID! @unique 
  drivers: [Driver! ] @relation(name: "DriverShifts") 
}


type Zone {
  id: ID! @unique 
  drivers: [Driver! ] @relation(name: "DriverZones") 
}

在这里,我想根据我创建的数据模型将preferredZone和preferredShift的关系创建为Zone和Shift类型。 这是一种单向的关系。

关系字段preferredShift必须指定一个@relation伪指令:@relation(name: "MyRelation")     ,关系字段preferredZone必须指定一个@relation伪指令:@relation(name: "MyRelation")

我在我的棱镜数据库中使用了PostgreSQL。如何建立PreferredZone与Zone之间的关系。和preferredShift到Shift。

1 个答案:

答案 0 :(得分:0)

您需要命名这些关系,因为在相同类型之间有两个关系(驱动程序<-> Shift和驱动程序<-> Zone分别通过两个关系连接)。

在这种情况下,Prisma要求您命名关系,这就是您发布的错误消息的含义。我认为该数据模型应该可以工作:

type Driver {
  id: ID! @unique
  zones: [Zone!] @relation(name: "DriverZones")
  shifts: [Shift!] @relation(name: "DriverShifts")
  preferredZone: Zone @relation(name: "PreferredZone")
  preferredShift: Shift @relation(name: "PreferredShift")
}


type Shift {
  id: ID! @unique 
  drivers: [Driver! ] @relation(name: "DriverShifts") 
}


type Zone {
  id: ID! @unique 
  drivers: [Driver! ] @relation(name: "DriverZones") 
}