GraphQL Prisma-定义“;投票“;键入指向两个用户的链接

GraphQL Prisma-定义“;投票“;键入指向两个用户的链接,graphql,prisma,prisma-graphql,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中,我会创建一个单独的集合,如下所示: {

我刚开始使用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)指定为字符串,然后通过应用程序逻辑将它们链接到用户集合

当然,在GraphQL Prisma中会有所不同。但我还是有点搞不清楚这种关系是如何建立的。下面到底发生了什么


如何使用Prisma GraphQL创建这样的模式?

当同一类型有多个关系字段时,需要使用
@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!
}