如何从 Prisma 中的 MySql 关系表中获取数据
Posted
技术标签:
【中文标题】如何从 Prisma 中的 MySql 关系表中获取数据【英文标题】:How to get data from MySql relation table in Prisma 【发布时间】:2018-10-30 21:52:10 【问题描述】:在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的正确方法吗? (已编辑)
【问题讨论】:
【参考方案1】:根据您的描述,此查询应该“正常工作”:
query
rides
feedback
passenger
id
origin
id
destination
id
Prisma 使用您提到的关系表方法来跟踪两个节点之间的关系,例如表 _OriginToRide
与数据模型中的关系 @relation(name: "OriginToRide")
相关。
您无需在 SQL 级别更改任何内容即可在之后连接关系。
注意:以上适用于具有已激活迁移的 Prisma 数据库连接器。如果您的连接器不进行迁移,则支持表示关系的不同方法。支持这一点的相应数据模型可以由introspecting您现有的数据库模式生成。
【讨论】:
如果你的连接表没有下划线命名怎么办?以上是关于如何从 Prisma 中的 MySql 关系表中获取数据的主要内容,如果未能解决你的问题,请参考以下文章
如何在 MySQL 中实现 schema.prisma @reference(fields:...)?