0

在 datamodel.graphql

type Ride {
 rideId: String
 productId: String
 passenger: Passenger
 origin: Origin
 destination: Destination
 dateTime: DateTime
 feedback: String
}


type Passenger {
 id: ID! @unique
 firstName: String
 lastName: String
}

type Destination {
 # The unique ID of the destination.
 id: ID! @unique
 latitude: Float
 longitude: Float
 address: String
}

type Origin {
 id: ID! @unique
 latitude: Float
 longitude: Float
 address: String
}


type Report {

 productId: String
 passenger: Passenger
 description: String
}

我部署了这个数据模型并生成了一个 MySql Db、自动查询、突变。

它在 MySql 中创建了“Ride”、“Passenger”、“Report”和“Origin”表。但它没有在“Ride”表中为乘客、出发地、目的地创建任何列。

它为此创建一个关系表,如_PassengerToRide、_OriginToRide 和_DestinationToRide。

“Ride”表中缺乏关系建立,当我查询“rides()”时,我无法从乘客、起点和目的地表中获取详细信息。这是定义datamodel.graphql的正确方法吗?(已编辑)

4

1 回答 1

0

根据您的描述,此查询应该“正常工作”:

query {
  rides {
    feedback
    passenger {
      id
    }
    origin {
      id
    }
    destination {
      id
    }
  }
}

Prisma 使用您提到的关系表方法来跟踪两个节点之间的关系,例如表_OriginToRide@relation(name: "OriginToRide")您的数据模型中的关系相关。

您无需在 SQL 级别更改任何内容即可在之后连接关系。

注意:以上适用于激活迁移的 Prisma 数据库连接器。如果您的连接器不进行迁移,则支持表示关系的不同方法。可以通过内省现有的数据库模式来生成支持此功能的相应数据模型。

于 2018-05-22T16:47:02.703 回答