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

Posted

技术标签:

【中文标题】GraphQL Prisma - 定义链接到两个用户的“投票”类型【英文标题】:GraphQL Prisma - define "vote" type that links to two users 【发布时间】:2018-09-07 06:39:39 【问题描述】:

我刚刚开始使用 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】:

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

【讨论】:

以上是关于GraphQL Prisma - 定义链接到两个用户的“投票”类型的主要内容,如果未能解决你的问题,请参考以下文章

模式拼接两个远程 Prisma/GraphQL 模式

GraphQL Prisma 客户端连接不起作用

GraphQL(Prisma)突变数据未定义

GraphQL 和 Prisma:当它们已经是 Prisma 数据库模式的一部分时,为啥要在应用程序模式中重新定义类型?

使用 Apollo + GraphQL 将 Prisma 1 升级到 Prisma 2

如何在两个字段 prisma-graphql 中使用相同的生成 ID