GraphQL Prisma - 定义链接到两个用户的“投票”类型

时间:2018-03-28 14:11:53

标签: graphql prisma prisma-graphql

我刚开始使用Prisma。之前主要使用firebase和mongodb来定义我的模式。

我正在尝试定义以下架构:

Vote {
    id: ID!
    from: User! # The user who voted
    for: User! # The user that received a vote
    rate: Float!
}

基本上,我想要实现的是让用户投票给其他用户(给他们一个分数)。 在MongoDB中,我会通过创建一个单独的集合来实现,如下所示:

{
    id: DocumentID
    from: String // id of the user who voted
    for: String // id of the user that received a vote
    rate: Number
}

在这里,我只是将这些字段(from和for)指定为字符串,然后通过应用程序逻辑将它们与User集合链接。

当然,GraphQL Prisma会有所不同。但我仍然对如何建立关系感到困惑。下面真的发生了什么。

如何使用Prisma GraphQL创建此类模式?

1 个答案:

答案 0 :(得分:2)

如果同一类型有多个关系字段,则需要使用@relation指令使其明确无误。

type Vote {
  id: ID! @unique
  votingUser: User! @relation(name: "VoteAuthor")
  votedUser: User! @relation(name: "VoteReceiver")
  rate: Float!
}

type User {
  id: ID! @unique
  receivedVotes: [Vote!]! @relation(name: "VoteReceiver")
  givenVotes: [Vote!]! @relation(name: "VoteAuthor")
  name: String!
}