如何从Prisma

时间:2018-05-21 09:13:58

标签: node.js schema graphql prisma prisma-graphql

在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”表。但它没有为“乘坐”表中的乘客,出发地,目的地创建任何列。

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

在“Ride”表中缺少关系建立,当我查询“rides()”时,我无法从Passenger,Origin和Destination表中获取详细信息。这是定义datamodel.graphql的正确方法吗? (编辑)的

1 个答案:

答案 0 :(得分:0)

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

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

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

您不必在SQL级别上更改任何内容以便之后连接关系。

  

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